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] |
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