So, benchmarking. I did a couple of quick SPECjvm98 runs, to see what the times looked like. Please note that neither of these results were produced in compliance with the SPECjvm98 run rules so they are not comparable with SPECjvm98 metrics.
|SPECjvm98 times for the interpreters in IcedTea6 1.4|
This result would suggest that the lion’s share of the performance difference between the template interpreter and Zero is down to Zero’s use of the C++ interpreter. There’s obviously something else slowing it down as well, though, possibly libffi, possibly the unaligned access stuff Ed Nevill mailed about the other day, or possibly something else entirely.
|SPECjvm98 times for IcedTea6 1.3 Zero and IcedTea6 1.4 Zero|
Apparently Robert Schuster was right about the speed loss between IcedTea6 1.3 Zero and IcedTea6 1.4. Most of the times are within 1% of each other, but the mpegaudio benchmark is some 12% slower. Assuming it is Zero (and not, for example, the HotSpot upgrade) there’s not a lot that could account for it. It could simply be the stack overflow checking that the Zero in 1.3 didn’t have, but I wouldn’t have thought that would have had such a pronounced effect. Maybe something’s not getting inlined like I expected; I’m going to have to hunt a little for this one…