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