bitIndex6()
[tr]
[td]456.719
457
ibm13index6e.csv
Thread priority = 5
Classic VM
IBM Corporation
1.3.0
1.3.0
IBM Corporation
[/td]
[td]486.462
486
ms114index6e.csv
Thread priority = 5
null
null
null
1.1.4
Microsoft Corp.
[/td]
[td]361.481
361
sun12index6e.csv
Thread priority = 5
Classic VM
Sun Microsystems Inc.
1.2
1.2
Sun Microsystems Inc.
[/td]
[td]591.169
591
sun131index6e.csv
Thread priority = 5
Java HotSpot™ Client VM
Sun Microsystems Inc.
1.3.1-b24
1.3.1
Sun Microsystems Inc.
[/td]
[td]728.77
729
sun141index6e.csv
Thread priority = 5
Java HotSpot™ Client VM
Sun Microsystems Inc.
1.4.1-b21
1.4.1
Sun Microsystems Inc.
[/td]
[td]606.939
607
sun142index6e.csv
Thread priority = 5
Java HotSpot™ Client VM
Sun Microsystems Inc.
1.4.2_01-b06
1.4.2_01
Sun Microsystems Inc.
[/td]
[/tr]
bitIndex8()
[tr]
[td]418.503
418
ibm13index8e.csv
Thread priority = 5
Classic VM
IBM Corporation
1.3.0
1.3.0
IBM Corporation
[/td]
[td]455.988
456
ms114index8e.csv
Thread priority = 5
null
null
null
1.1.4
Microsoft Corp.
[/td]
[td]337.237
337
sun12index8e.csv
Thread priority = 5
Classic VM
Sun Microsystems Inc.
1.2
1.2
Sun Microsystems Inc.
[/td]
[td]567.88
568
sun131index8e.csv
Thread priority = 5
Java HotSpot™ Client VM
Sun Microsystems Inc.
1.3.1-b24
1.3.1
Sun Microsystems Inc.
[/td]
[td]627.207
627
sun141index8e.csv
Thread priority = 5
Java HotSpot™ Client VM
Sun Microsystems Inc.
1.4.1-b21
1.4.1
Sun Microsystems Inc.
[/td]
[td]574.385
574
sun142index8e.csv
Thread priority = 5
Java HotSpot™ Client VM
Sun Microsystems Inc.
1.4.2_01-b06
1.4.2_01
Sun Microsystems Inc.
[/td]
[/tr]
Evil looking bitIndex9()
[tr]
[td]22.033
22
ibm13index9e.csv
Thread priority = 5
Classic VM
IBM Corporation
1.3.0
1.3.0
IBM Corporation
[/td]
[td]463.16
463
ms114index9e.csv
Thread priority = 5
null
null
null
1.1.4
Microsoft Corp.
[/td]
[td]322.418
322
sun12index9e.csv
Thread priority = 5
Classic VM
Sun Microsystems Inc.
1.2
1.2
Sun Microsystems Inc.
[/td]
[td]523.457
523
sun131index9e.csv
Thread priority = 5
Java HotSpot™ Client VM
Sun Microsystems Inc.
1.3.1-b24
1.3.1
Sun Microsystems Inc.
[/td]
[td]523.457
523
sun131index9e.csv
Thread priority = 5
Java HotSpot™ Client VM
Sun Microsystems Inc.
1.3.1-b24
1.3.1
Sun Microsystems Inc.
[/td]
[td]513.895
514
sun142index9e.csv
Thread priority = 5
Java HotSpot™ Client VM
Sun Microsystems Inc.
1.4.2_01-b06
1.4.2_01
Sun Microsystems Inc.
[/td]
[/tr]
It would appear that IBM’s JVM optimized bitIndex9() out!
As a whole they appear to be slower (than bitIndex5() ) under microbench mark conditions. Personnally I was expecting that the JIT compilers would be considerably slower due to most JIT’s being nothing more than a Interpreter without the overheads of interpreting (!). Interpreters dont reorder code they execute each byte code as it comes.
All but one JVM is able to beat the original bitIndex2().
Note that the 1.4.2 -server -Xcompile scores are not present, as I have not finished playing with it yet.
I have tested it on bitTest2, 4 & 5.
Using -Xcompile made no difference to the client JVM as neither did changing the amount of “warm up” time.
The server version when using just the -server switch manages to optimize out the the benchmark completely giving a score of zero. When combined with -Xcompile a score is presented, it has the greatest gain (percentage increase over bitIndex2() ) in the order of 190% for bitIndex4(), which is faster that bitIndex5(). But is using 308 clocks to do it.
Obviously the microbenchmark is going to have to be modified in order to stop the code being optimized out.
It would be interesting to try them on a P4 which has a very long pipeline, so surely bitIndex9() would be faster than bitIndex5().
Cold fish all round then!
Woz.