Hello Gambit users.
I would like to share some interesting benchmark results that compare i586, x86-64 and x32 ABI. The experiments were done with the released version 4.9.3 of Gambit, gcc 8.3.0, a Ryzen 7 1800X and a quite large Scheme code file as input to the -dg option of Gambit, which calculates a dependency graph like this:
gsc -:l60 -c -dg largescheme.scm
The binary gsc was built for all three architectures. The runtimes for the gsc call above are reported as averages over 5 runs.
arch. runtime (s) size RSS (MB) x32 67.90 2200 x86-64 71.90 + 6 % 4360 +98 % i586 80.31 +18 % 2200 + 0 %
I have reported similar numbers for other Scheme implementations and other benchmarked programs. For some of them, the runtime difference are more drastic (20 - 30 %) in favor of x32.
For garbage-intensive programs, the results (like the ones listed above) can be summarized as follows:
1. x86-64 increases memory demands by a factor of 2.
2. i586 loses significantly in speed because it cannot used all features and registers of a 64bit CPU.
3. x32 can be faster than x86-64 for Scheme programs as described above, probably because GC has to look at only half of the memory (compared to x86-64).
Ciao Sven