Sun 29 Aug 2010 07:49:05 PM UTC, original submission:
Luca Saiu made an interesting test case:
http://thread.gmane.org/gmane.lisp.guile.bugs/4538
It runs Guile ten times, each time running a recursive fibonacci function three times in a row. Within each Guile run, the three fibonacci runs do take the same amount of time, but times vary considerably between the various Guile runs.
For example, here the run results in the following:
$ rm -rf ~/.cache/guile/; for i in `seq 10`; do
> guile --autocompile q.scm; echo; done
;;; note: autocompilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-autocompile argument to disable.
;;; compiling q.scm
;;; compiled /home/wingo/.cache/guile/ccache/2.0-0.R-LE-8/tmp/q.scm.go
(begin (fibo n)) returned 9227465 in 3.13 seconds.
(begin (fibo n)) returned 9227465 in 3.13 seconds.
(begin (fibo n)) returned 9227465 in 3.13 seconds.
(begin (fibo n)) returned 9227465 in 3.04 seconds.
(begin (fibo n)) returned 9227465 in 3.04 seconds.
(begin (fibo n)) returned 9227465 in 3.04 seconds.
(begin (fibo n)) returned 9227465 in 3.24 seconds.
(begin (fibo n)) returned 9227465 in 3.24 seconds.
(begin (fibo n)) returned 9227465 in 3.25 seconds.
(begin (fibo n)) returned 9227465 in 3.13 seconds.
(begin (fibo n)) returned 9227465 in 3.15 seconds.
(begin (fibo n)) returned 9227465 in 3.14 seconds.
(begin (fibo n)) returned 9227465 in 3.25 seconds.
(begin (fibo n)) returned 9227465 in 3.24 seconds.
(begin (fibo n)) returned 9227465 in 3.25 seconds.
(begin (fibo n)) returned 9227465 in 3.65 seconds.
(begin (fibo n)) returned 9227465 in 3.65 seconds.
(begin (fibo n)) returned 9227465 in 3.63 seconds.
(begin (fibo n)) returned 9227465 in 3.36 seconds.
(begin (fibo n)) returned 9227465 in 3.37 seconds.
(begin (fibo n)) returned 9227465 in 3.38 seconds.
(begin (fibo n)) returned 9227465 in 3.33 seconds.
(begin (fibo n)) returned 9227465 in 3.35 seconds.
(begin (fibo n)) returned 9227465 in 3.33 seconds.
(begin (fibo n)) returned 9227465 in 3.6 seconds.
(begin (fibo n)) returned 9227465 in 3.6 seconds.
(begin (fibo n)) returned 9227465 in 3.61 seconds.
(begin (fibo n)) returned 9227465 in 3.4 seconds.
(begin (fibo n)) returned 9227465 in 3.41 seconds.
(begin (fibo n)) returned 9227465 in 3.4 seconds.
In that thread I mentioned that I suspected it was GC, but that doesn't sound likely, as this benchmark doesn't cons. So perhaps it is indeed alignment.
The next step here is to run Guile under oprofile or perf, detecting such things as cache misses.
|