Reflection vs MethodHandle performance in Oracle JDK 7u7

Remi Forax forax at univ-mlv.fr
Sat Oct 13 10:01:09 PDT 2012


On 10/13/2012 04:22 AM, Ashwin Jayaprakash wrote:
> I ran the same test on a slightly older laptop with both JDK 7u7 and 
> JDK 8-ea-bin-b59-windows-x64-04_oct_2012. Hardware is i5 M430 - 1 CPU 
> x 2 Cores x 2 HT running Windows 7, 64 bit.
>
> The results are promising in JDK 8 for MethodHandles and strangely, 
> Reflection and direct calls were slower than JDK 7u7.

Not only reflection, all the benchmarks but the method handle one.
Given that the overhead seems constant, I think you can try to 
deactivate the tiered compilation
which is enabled by default with jdk8.

Also, is it possible to benchmark the creation of a 
j.l.r.Method/j.l.i.MethodHandle from and the call itself.

Rémi

>
> *JDK 7u7, 64 bit, Win:*
>  0% Scenario{vm=java, trial=0, benchmark=Direct, mode=-server, 
> minHeap=-Xms96m, maxHeap=-Xmx96m} 4.60 ns; ?=0.02 ns @ 3 trials
> 20% Scenario{vm=java, trial=0, benchmark=Iface, mode=-server, 
> minHeap=-Xms96m, maxHeap=-Xmx96m} 4.65 ns; ?=0.04 ns @ 3 trials
> 40% Scenario{vm=java, trial=0, benchmark=Reflect, mode=-server, 
> minHeap=-Xms96m, maxHeap=-Xmx96m} 18.06 ns; ?=0.13 ns @ 3 trials
> 60% Scenario{vm=java, trial=0, benchmark=Handle, mode=-server, 
> minHeap=-Xms96m, maxHeap=-Xmx96m} 24.33 ns; ?=0.89 ns @ 10 trials
> 80% Scenario{vm=java, trial=0, benchmark=Static, mode=-server, 
> minHeap=-Xms96m, maxHeap=-Xmx96m} 4.75 ns; ?=0.01 ns @ 3 trials
>
> benchmark    ns linear runtime
>    Direct  4.60 =====
>     Iface  4.65 =====
>   Reflect 18.06 ======================
>    Handle 24.33 ==============================
>    Static  4.75 =====
>
> vm: java
> trial: 0
> mode: -server
> minHeap: -Xms96m
> maxHeap: -Xmx96m
>
>
> *JDK 8 ea b59, 64 bit, Win:*
>  0% Scenario{vm=java, trial=0, benchmark=Reflect, mode=-server, 
> minHeap=-Xms96m, maxHeap=-Xmx96m} 21.31 ns; ?=0.30 ns @ 10 trials
> 20% Scenario{vm=java, trial=0, benchmark=Handle, mode=-server, 
> minHeap=-Xms96m, maxHeap=-Xmx96m} 18.00 ns; ?=0.22 ns @ 10 trials
> 40% Scenario{vm=java, trial=0, benchmark=Direct, mode=-server, 
> minHeap=-Xms96m, maxHeap=-Xmx96m} 6.61 ns; ?=0.00 ns @ 3 trials
> 60% Scenario{vm=java, trial=0, benchmark=Iface, mode=-server, 
> minHeap=-Xms96m, maxHeap=-Xmx96m} 6.63 ns; ?=0.02 ns @ 3 trials
> 80% Scenario{vm=java, trial=0, benchmark=Static, mode=-server, 
> minHeap=-Xms96m, maxHeap=-Xmx96m} 6.84 ns; ?=0.30 ns @ 10 trials
>
> benchmark    ns linear runtime
>   Reflect 21.31 ==============================
>    Handle 18.00 =========================
>    Direct  6.61 =========
>     Iface  6.63 =========
>    Static  6.84 =========
>
> vm: java
> trial: 0
> mode: -server
> minHeap: -Xms96m
> maxHeap: -Xmx96m
>
>
> Regards,
> Ashwin.
>
>
>
>
> _______________________________________________
> mlvm-dev mailing list
> mlvm-dev at openjdk.java.net
> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev



More information about the mlvm-dev mailing list