| leonardo ( @ 2009-07-04 23:57:00 |
Richards benchmark
This old post of mine is about virtual methods and devirtualizations:
http://leonardo-m.livejournal.com/7 6547.html
I have performed more benchmarks about virtual methods and its costs with LDC. I have used a little well known benchmark, the Richards one. I have used the code from here (on the Web Archive because it seems to be not online anymore):
http://web.archive.org/web/200607150741 31/lissett.port5.com/ben/bench1.htm
http://web.archive.org/web/200607150741 31/http://lissett.port5.com/ben/bench3.h tm
All the code of the following benchmarks:
http://www.fantascienza.net/leonard o/js/richards.zip
Note that the classes in C# code aren't final. As usual Java shows very good performance.
On WindowsXp:
DMD Digital Mars D Compiler v1.042
gcc version 4.3.3-dw2-tdm-1 (GCC)
dmd used with:
dmd -O -release -inline
ldc used with:
ldc -O5 -release -inline
gcc used with:
gcc -Wall -O3 -s -fomit-frame-pointer -msse3 -march=core2
On Pubuntu:
gcc version 4.2.4 (Ubuntu 4.2.4-1ubuntu4)
ldc based on DMD v1.045 and llvm 2.6svn (Thu Jul 2 23:07:48 2009)
ldc used with:
ldc -O5 -release -inline
gcc used with:
gcc -Wall -O3 -s -fomit-frame-pointer -msse3 -march=native
This old post of mine is about virtual methods and devirtualizations:
http://leonardo-m.livejournal.com/7
I have performed more benchmarks about virtual methods and its costs with LDC. I have used a little well known benchmark, the Richards one. I have used the code from here (on the Web Archive because it seems to be not online anymore):
http://web.archive.org/web/200607150741
http://web.archive.org/web/200607150741
All the code of the following benchmarks:
http://www.fantascienza.net/leonard
Timing results: Windows, n = 10_000_000: C: 1.26 D ~C: 2.01 Java: 2.04 (final classes, -server) D2 ~C#: 2.36 (final classes) D3 ~C#: 2.36 (final classes, no getters/setters) Java: 2.73 (final classes) D4 ~C#: 3.07 (no getters/setters) C#: 3.98 D1 ~C#: 4.23 Windows, n = 100_000_000: C: 12.16 Java: 18.73 (final classes, -server) D ~C: 18.86 D2 ~C#: 23.11 (final classes) D3 ~C#: 23.12 (final classes, no getters/setters) Java: 25.40 (final classes) D4 ~C#: 30.16 (no getters/setters) C#: 38.39 D1 ~C#: 41.64 Pubuntu, n = 10_000_000: D ~C: 1.35 C: 1.39 D2 ~C#: 1.98 (final classes) D3 ~C#: 2.00 (final classes, no getters/setters) Java: 2.73 (final classes) D4 ~C#: 2.94 (no getters/setters) C#: - D1 ~C#: 4.03 Pubuntu, n = 100_000_000: D ~C: 13.24 C: 13.77 D2 ~C#: 19.64 (final classes) D3 ~C#: 19.92 (final classes, no getters/setters) Java: 25.16 (final classes) D4 ~C#: 29.16 (no getters/setters) C#: - D1 ~C#: 40.17 Key: D ~C# means D code that comes from the C# version. D ~C means D code that comes and looks from the C version.
Note that the classes in C# code aren't final. As usual Java shows very good performance.
On WindowsXp:
DMD Digital Mars D Compiler v1.042
gcc version 4.3.3-dw2-tdm-1 (GCC)
dmd used with:
dmd -O -release -inline
ldc used with:
ldc -O5 -release -inline
gcc used with:
gcc -Wall -O3 -s -fomit-frame-pointer -msse3 -march=core2
On Pubuntu:
gcc version 4.2.4 (Ubuntu 4.2.4-1ubuntu4)
ldc based on DMD v1.045 and llvm 2.6svn (Thu Jul 2 23:07:48 2009)
ldc used with:
ldc -O5 -release -inline
gcc used with:
gcc -Wall -O3 -s -fomit-frame-pointer -msse3 -march=native