boxing + unboxing a VT is not a no-op ?

Tobias Hartmann tobias.hartmann at oracle.com
Wed Jul 18 11:28:48 UTC 2018


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 path_to_the_folder_that_contains_the_jars -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.arraylist_integer_get                       avgt    9
>>> 0.055 ±  0.001  ms/op
>>> ReifiedListBenchMark.reifiedlist_intbox_get                      avgt    9
>>> 506.190 ±  7.978  ms/op
>>> ReifiedListBenchMark.valuelist_intbox_get                        avgt    9
>>> 0.027 ±  0.001  ms/op
>>> ReifiedListBenchMark.valuelist_intbox_inlined_reduce             avgt    9
>>> 0.027 ±  0.001  ms/op
>>> ReifiedListBenchMark.valuelist_intbox_innervalue_inlined_reduce  avgt    9
>>> 0.304 ±  0.004  ms/op
>>>
>>> if you compare valuelist_intbox_get and valuelist_intbox_inlined_reduce 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.
>>>
>>> valuelist_intbox_innervalue_inlined_reduce should be as fast as
>>> valuelist_intbox_inlined_reduce, because the only difference is value type to
>>> object boxing.


More information about the valhalla-dev mailing list