[racket] Strange time function results

From: Eli Barzilay (eli at barzilay.org)
Date: Wed May 16 16:31:34 EDT 2012

A few minutes ago, Harry Spier wrote:
> I've just started using the "time" function to check the timings of
> some functions in my program.  I'm testing the timings of two
> functions, each of these functions takes a list of lists and
> transforms it into another list of lists.  The size of each list of
> lists is in the order of about 1000 x 1000.
> Each time I used it in DRacket I got very different results.  So I
> did this test.  I put three calls to the two functions right after
> each other in the program as follows.
> [...]
> and got these results
> cpu time: 7176 real time: 6620 gc time: 4537
> cpu time: 2262 real time: 2289 gc time: 437
> cpu time: 5600 real time: 5257 gc time: 2949
> cpu time: 3728 real time: 3516 gc time: 1748
> cpu time: 4040 real time: 3673 gc time: 1388
> cpu time: 2418 real time: 2311 gc time: 422
> Its in DrRacket on a dual core pentium under windows.
> Why the widely divergent timings

They're not that far off -- if you subtract the gc time.  In general,
for such timing it's best to run the code several times, possibly with
calling `collect-garbage' between calls.

> and why is CPU time in general more than real-time?

(This looks weird, maybe you're using multiple cores?)

          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
                    http://barzilay.org/                   Maze is Life!

Posted on the users mailing list.