[gambit-list] Running times: real vs. CPU

Taylor Venable taylor at metasyntax.net
Tue Apr 28 20:00:28 EDT 2009


On Mon, Apr 27, 2009 at 01:42:46PM -0400, Marc Feeley wrote:
> I installed OpenBSD 4.5 to determine the source of the problem.  It  
> appears that OpenBSD's nanosleep is quite slow and Gambit did not  
> optimize the case where it was sleeping for 0 seconds following a  
> heartbeat interrupt (100 times per second).  I have now committed to the 
> repository a patch which optimizes this case.  Now the real time and cpu 
> time are almost identical (but note in the results below that OpenBSD is 
> reporting some strange user and system CPU time for the original program, 
> although the sum of these CPU times is correct).

I downloaded the devel sources for 4.4.3 and did a "git fetch" and
"git rebase" to the specific commit that fixes the nanosleep problem.
The result works precisely as advertised: the times are much improved
over the 4.4.2 version I had been running.  Thanks very much for
taking the time to look into this and optimize for it.

> I have also looked into how the performance of your program can be  
> improved.  The original program allocates a lot of objects (over 6GB are 
> allocated) that are all very short lived (the amount of live data is well 
> below 1 KB on average).  This causes very frequent garbage collections 
> because Gambit's default heap size is really small (200 KB heap size... 
> so the GC is called 30 thousand times!).  With a change in heap size, 
> declarations, and algorithm, the program can be sped up by a factor of 
> 30.  Here's how the different versions perform with the new patch.
>
> ;; Improved sum-of-squares algorithm with declarations (heap size  
> irrelevant):
>
> SOLUTION = 8581147
> (time (solution))
>     813 ms real time
>     810 ms cpu time (800 user, 10 system)
>     no collections
>     2584 bytes allocated
>     11 minor faults
>     no major faults

This is phenomenal!  Clearly I have much to learn about how to
optimize code, but with your definitions and some declarations I can
get the same thing on my end.  Much appreciated!

-- 
Taylor Christopher Venable
http://real.metasyntax.net:2357/



More information about the Gambit-list mailing list