This is the mail archive of the guile@cygnus.com mailing list for the guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Lilypond & GUILE: failure report, help!


Han-Wen Nienhuys <hanwen@cs.uu.nl> writes:



> Processing a simple file that would normally take a 5 seconds or so,
> takes several minutes with the smobbified version.  The program spends
> a very long time in the output stage (where the SCM expressions are
> evaluated and put out to a file).  I would estimate that the program
> contains perhaps 100 to 1000 smobs and about the same number of
> protected SCM objects during that stage.  Do minutes sound as
> reasonable processing times?  I tried some tricks to keep down the
> number of unprotect calls, to increase the heap size (allocating a
> large block of memory), but to no avail.  Are there any other ways to
> tune the collector?
> 
> I know I am being quite vague, so if anyone wants to help out, I can
> prepare a version of LilyPond that uses smobs (I took them out again),
> to give you an idea of what's happening.  You need python, GNU make
> and egcs-c++-1.1 to compile LilyPond.
>

Even a sample of your smobs and the place where it's hitting the brick
wall would be helpful. Granted, the current gc is on the slow side,
but it's not *that* slow.

Also, if this is 1.3, there's badness with the io, so that could be
what's causing the problem (particularly since you seem to be seeing
this with output).


> BTW, What is the customary "null" value for SCM?  If I simply use 0, I
> get core dumps from the garbage collector.

For what, exactly? SCM_UNDEFINED generally does the trick, though you
want SCM_EOL for the end of a list.



-- 
Greg