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

Azeem Jiva azeem.jiva at oracle.com
Thu Sep 5 07:52:03 PDT 2013

I agree with Aleksey, the data in raw format is hard to read.  Can you organize the data into a chart or table?  Have you tried a SPARC system?

Azeem Jiva

----- Original Message -----
From: aleksey.shipilev at oracle.com
To: niclas.adlertz at oracle.com
Cc: vladimir.kozlov at oracle.com, hotspot-compiler-dev at openjdk.java.net
Sent: Thursday, September 5, 2013 7:14:01 AM GMT -08:00 US/Canada Pacific
Subject: Re: RFR(XS): JDK-8010941: MinJumpTableSize is set to 18, investigate if that's still optimal

Hi Niclas,

I have trouble interpreting the results. What are the different numbers after win/loss? Jump table sizes? What is "Not"? Shouldn't "Not" be the same if they are not using the Jump Table? I am very confused.


On 05.09.2013, at 16:41, Niclas Adlertz <niclas.adlertz at oracle.com> wrote:

> Hi all.
> Sorry for the delay.
> I've written a JMH test[0] and the results[1] differs from what I previously got. Because of this, I propose the new MinJumpTableSize number to be 10.
> WEBREV: http://cr.openjdk.java.net/~adlertz/JDK-8010941/webrev01/
> [0]
> http://cr.openjdk.java.net/~adlertz/JDK-8010941/MyBenchmark.java
> [1]
> http://cr.openjdk.java.net/~adlertz/JDK-8010941/results.txt
> Kind Regards,
> Niclas Adlertz
> On 22 maj 2013, at 00:48, Aleksey Shipilev <aleksey.shipilev at oracle.com> wrote:
>> 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