From: Sam S. <sd...@gn...> - 2002-09-17 13:36:18
|
> * In message <200...@va...> > * On the subject of "[clisp-list] Lots o' garbage ..." > * Sent on Mon, 16 Sep 2002 16:16:40 -0400 > * Honorable "John K. Hinsdale" <hi...@al...> writes: > > I think it is that my library is doing lots of consing and generating > a LOT of garbage for Lisp's GC to deal with (more on this below) So > I'm wondering: what's a good way to find the places in my code where > I'm consing and generating garbage? Is there a "consing profiler" > type tool to do that? I just read the chapter entitled "Speed" in > Graham's book "ANSI Common Lisp" and it says what functions to avoid > calling a lot, but I would rather be able to focus in on the hot spots > instead of having to laboriously rework all my newly debugged code ;) CLOCC/src/tools/metering.lisp and CLISP built-in SPACE macro (see <http://clisp.cons.org/impnotes.html#space> <http://clisp.cons.org/impnotes/environment-dict.html#space>) > % cumulative self self total > time seconds seconds calls s/call s/call name > 29.45 28.07 28.07 1498 0.02 0.04 gar_col_normal > 22.95 49.95 21.88 4556398 0.00 0.00 gc_mark > 12.16 61.54 11.59 139359175 0.00 0.00 objsize > 6.62 67.85 6.31 11624570 0.00 0.00 interpret_bytecode_ > 1.54 69.32 1.47 2372121 0.00 0.00 allocate_iarray > 1.41 70.66 1.34 25267275 0.00 0.00 funcall > 1.31 71.91 1.25 10240813 0.00 0.00 funcall_closure > 0.87 72.74 0.83 355825 0.00 0.00 convert_from_foreign > 0.86 73.56 0.82 15026462 0.00 0.00 funcall_subr > > Adding the first three lines, it appears to be spending over 60% of > its time doing GC. this is ugly. usually the biggest hog is interpret_bytecode_(). > Also notice the 25 million calls to "funcall" -- I tried to elminate > that by proclaiming ALL my Oracle package functions as "inline" as > well as "(declare (optimize (speed 3)))" etc. I also built CLISP with > C compilation flags for maximum optimization (-O4) CLISP does respect INLINE declarations when you compile a file. CLISP ignores OPTIMIZE. Alas, CLISP FFI is not too efficient. Joerg-Cyril posted several interesting rants on the matter, but is yet to fix this. Prod him! -- Sam Steingold (http://www.podval.org/~sds) running RedHat7.3 GNU/Linux <http://www.camera.org> <http://www.iris.org.il> <http://www.memri.org/> <http://www.mideasttruth.com/> <http://www.palestine-central.com/links.html> Your mousepad is incompatible with MS Windows - your HD will be reformatted. |