This is the mail archive of the
guile@cygnus.com
mailing list for the Guile project.
Well, that's interesting.
- To: Guile Discussion <guile@cygnus.com>
- Subject: Well, that's interesting.
- From: Jim Blandy <jimb@red-bean.com>
- Date: Wed, 9 Jun 1999 12:21:26 -0500
I always used to feel like Dr. Science does: "I don't perform
experiments --- data just *occur* to me."
Now that I've actually got some simple benchmarking stuff, I'm
beginning to appreciate why people are always posting such wildly
varying benchmark results, even when accounting for well-known issues
like the debugging support.
For example, I've commented out benchmarks, and seen total GC time for
the remaining suite increase by an order of magnitude.
As another example, yesterday I fixed the bug in GDB that makes it
annoying to step into functions in shared libraries (you end up in
strcmp, or whatever). So I figured I'd rebuild a dynamically linked
Guile executable, and try things out.
The first set of benchmarks below were run with a dynamically linked
Guile, the second with a statically linked Guile. I can switch back
and forth between the two sets of results just by passing or omitting
the -static flag to the libtool command that builds the Guile
executable. The run times increase by 15 to 30%.
Maybe that's a well-known effect of dynamic linking, but I wasn't
aware of it until now.
I can think of explanations for all these effects, but in light of
these experiences, I'm growing dissatisfied with guessing about such
things.
; Opened log file, Wed 9 Jun 11:52:06
(start-log 928947126)
; System: Linux savonarola.red-bean.com 2.0.36 i586
(system-uname #("Linux" "savonarola.red-bean.com" "2.0.36" "" "i586"))
; Benchmark lib version: 4
(benchmark-library-version 4)
; Benchmark: ports revision 4
("ports" 4)
; read-sexp 10 passes 2.32s user 0.60s gc 0.04s sys
(read-sexp 10 (60 292 4 0 0))
; write-sexp 100 passes 7.74s user 0.00s gc 0.01s sys
(write-sexp 100 (0 774 1 0 0))
; read-lines 100 passes 4.75s user 1.64s gc 0.13s sys
(read-lines 100 (164 639 13 0 0))
; write-lines 500 passes 8.71s user 1.18s gc 0.00s sys
(write-lines 500 (118 989 0 0 0))
;;; Statically linked Guile.
; Opened log file, Wed 9 Jun 12:00:01
(start-log 928947601)
; System: Linux savonarola.red-bean.com 2.0.36 i586
(system-uname #("Linux" "savonarola.red-bean.com" "2.0.36" "" "i586"))
; Benchmark lib version: 4
(benchmark-library-version 4)
; Benchmark: ports revision 4
("ports" 4)
; read-sexp 10 passes 1.78s user 0.54s gc 0.08s sys
(read-sexp 10 (54 232 8 0 0))
; write-sexp 100 passes 6.59s user 0.00s gc 0.02s sys
(write-sexp 100 (0 659 2 0 0))
; read-lines 100 passes 3.91s user 1.46s gc 0.09s sys
(read-lines 100 (146 537 9 0 0))
; write-lines 500 passes 6.93s user 1.06s gc 0.04s sys
(write-lines 500 (106 799 4 0 0))