All entries for Tuesday 10 June 2008
June 10, 2008
Benchmarks
I was playing around with scimark 2 this evening, and its vaguely interesting. Over the last few years I've noticed some terrible benchmarks lying around online, but scimark seems to have gotten some things right. Its identified what its laying performance claims about (sequential scientific computing) and implemented common algorithms to benchmark. Unfortunately their code seems a little too amenable to optimisation. There's no crazy control flow, or methods that are hard to inline, etc. I suppose this is more the preserve of things like Spec Java business stuff, but still.
I decided to benchmark the scimark stuff in various forms, the numbers reform to claimed performance in MFlops.
sun-java6 -server | sun-java6 -client | GCC | GCC -O3 | Mono | ||
Compsite | 607.575 | 385.856 | 232.89 | 553.56 | 209.29 | |
FFT | 379.183 | 301.043 | 146.82 | 467.62 | 75.15 | |
SOR | 788.766 | 596.027 | 497.92 | 602.17 | 589.72 | |
Monte Carlo | 206.568 | 73.7055 | 49.9 | 79.89 | 6.96 | |
Spare Matrix | 444.312 | 386.757 | 204.16 | 639.38 | 200.97 | |
LU | 1219.05 | 571.748 | 265.63 | 978.73 | 173.65 |
GCC is version 4.3, Java is 1.6.0_06 and Mono is 1.9.1, all are using the packages from debian unstable.
I wouldn't draw too many conclusions from these benchmarks, since they probably aren't representative of anything many people are doing, just vaguely interesting to see how they panned out. Its probably worth having a look at which jvm options hit performance here, or comparing the assembly output by hotspot with that of GCC at some point in time. The implementation for c# that I found seemed to be a direct translation of the Java source, I have no idea if that is a sensible approach from a performance point of view.