I was quietly minding my own business, fixing some encoding bugs in
Eddie, my liberal RSS and Atom parser, when I noticed that Java 6
included support for UTF-32, which is one of the encoding tests that was
failing. I downloaded and installed the Ubuntu packages and installed
it, and decided to run a quick benchmark using my unit tests.
First up was the Sun Java 5 JVM. I’d been running the unit tests all
night, but timed it this time,and got these results:
Ran 3502 tests Passed 3322 tests Failed 180 tests real 1m10.293s user 0m40.375s sys 0m3.632s
Next I tried the Sun Java 6 JVM, using the same jar files and
got;
Ran 3502 tests Passed 3326 tests Failed 176 tests real 0m56.059s user 0m39.198s sys 0m4.212s
One thing to note was that it spend a couple of seconds noticing new
jars to read, so I decided to run it again and got:
Ran 3502 tests Passed 3326 tests Failed 176 tests real 0m45.317s user 0m34.770s sys 0m3.516s
Wow, I’d gone from 70 seconds to 45 seconds using the new runtime,
and interestingly enough, past 4 more tests in the process. I’m assuming
they are the UTF-32 tests, although I have’t checked yet. The other thing
for me to try is recompiling the code to see if that has any additional
benefits.
Update: Got around to checking what Java 6 fixed and
it turned out it was the additional support for koi-u and
cspc862latinhebrew encodings. After I fixed the UTF32 support in Eddie,
it passed an additional 16 tests. Down to just 160 out of 3502. I just
wish they would add support for some of the stranger encodings. Maybe
this will happen when it’s open
source.
on said:
Isn’t some of that down to caching? What happens if you run twice under Java 5 and use the second set of times?