boxing + unboxing a VT is not a no-op ? (original) (raw)
Tobias Hartmann tobias.hartmann at oracle.com
Wed Jul 18 11:28:48 UTC 2018
- Previous message (by thread): boxing + unboxing a VT is not a no-op ?
- Next message (by thread): boxing + unboxing a VT is not a no-op ?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Thanks, I've filed a bug [1] and have a fix ready.
Here are the results with the patched JVM:
Benchmark Mode Cnt Score Error Units ReifiedListBenchMark.arraylist_integer_get avgt 9 0.065 ± 0.010 ms/op ReifiedListBenchMark.reifiedlist_intbox_get avgt 9 593.495 ± 106.121 ms/op ReifiedListBenchMark.valuelist_intbox_get avgt 9 0.033 ± 0.007 ms/op ReifiedListBenchMark.valuelist_intbox_inlined_reduce avgt 9 0.030 ± 0.002 ms/op ReifiedListBenchMark.valuelist_intbox_innervalue_inlined_reduce avgt 9 0.029 ± 0.001 ms/op ReifiedListBenchMark.valuelist_intbox_reduce avgt 9 0.033 ± 0.009 ms/op
Best regards, Tobias
[1] https://bugs.openjdk.java.net/browse/JDK-8207773
On 17.07.2018 17:11, forax at univ-mlv.fr wrote:
The jar is test-fr.umlv.valuetype-1.0.jar, it has dependencies to JUnit 5 and JMH
Every jars are here: http://www-igm.univ-mlv.fr/~forax/tmp/valhalla/ you can run it like this: /usr/jdk/jdk-11-lworld/bin/java -XX:+EnableValhalla --module-path pathtothefolderthatcontainsthejars -m fr.umlv.valuetype/fr.umlv.valuetype.perf.ReifiedListBenchMark regards, Rémi ----- Mail original ----- De: "Tobias Hartmann" <tobias.hartmann at oracle.com> À: "Remi Forax" <forax at univ-mlv.fr> Cc: "valhalla-dev" <valhalla-dev at openjdk.java.net> Envoyé: Mardi 17 Juillet 2018 16:58:41 Objet: Re: boxing + unboxing a VT is not a no-op ?
Hi Remi,
okay, thanks for the details. Could you maybe upload the jmh benchmark .jar? I have problems to build the entire benchmark suite from scratch and I cannot reproduce the performance difference when extracting the benchmark methods and running them manually. Thanks, Tobias On 17.07.2018 16:14, forax at univ-mlv.fr wrote: when i run the benchmark,
Benchmark Mode Cnt Score Error Units ReifiedListBenchMark.arraylistintegerget avgt 9 0.055 ± 0.001 ms/op ReifiedListBenchMark.reifiedlistintboxget avgt 9 506.190 ± 7.978 ms/op ReifiedListBenchMark.valuelistintboxget avgt 9 0.027 ± 0.001 ms/op ReifiedListBenchMark.valuelistintboxinlinedreduce avgt 9 0.027 ± 0.001 ms/op ReifiedListBenchMark.valuelistintboxinnervalueinlinedreduce avgt 9 0.304 ± 0.004 ms/op if you compare valuelistintboxget and valuelistintboxinlinedreduce you see that a value type that contains an int as as fast as an int, that's great but i'm more interested by the last two benchmarks. valuelistintboxinnervalueinlinedreduce should be as fast as valuelistintboxinlinedreduce, because the only difference is value type to object boxing.
- Previous message (by thread): boxing + unboxing a VT is not a no-op ?
- Next message (by thread): boxing + unboxing a VT is not a no-op ?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]