RFR(XS): JDK-8010941: MinJumpTableSize is set to 18, investigate if that's still optimal

Aleksey Shipilev aleksey.shipilev at oracle.com
Tue May 21 15:48:46 PDT 2013


On 05/21/2013 10:17 PM, Vladimir Kozlov wrote:

> We usually do about 20000 iterations and run with -Xbatch to make sure
> tested method is compiled before time measurement.

Yeah, that works if the benchmark is the single method call. Anything
more complex require more complex warmup.

>> Also, I begin to wonder if after the multiply_by_power_of_ten inlining
>> start to affect how far we unroll the loop, since the jump tables are
>> starting to be larger.
> 
> You can avoid it by
> -XX:CompileCommand=dontinline,Test::multiply_by_power_of_ten

Or, (chanting) use JMH:
 http://hg.openjdk.java.net/code-tools/jmh/file/tip/jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_16_CompilerControl.java

Or, (chanting again) use JMH, because it does not really use indexed
loops, but rather volatile-predicated loop, so the loop unrolling is
ineffective (double ineffective with the source data re-read from the
fields on every iteration).

Before you jump on other platforms, look into the assembly to see if
your benchmark are actually generate the code that makes sense (i.e.
trapped on any of the issues Vladimir and me had speculated here):
 https://wiki.openjdk.java.net/display/HotSpot/PrintAssembly

-Aleksey.


More information about the hotspot-compiler-dev mailing list