Traversing an array of value types seen as an array of Object is slow

Roland Westrelin rwestrel at redhat.com
Fri Oct 5 13:45:52 UTC 2018


Hi Remi,

> I maybe wrong with the conclusion but this benchmark [1] show that there is something fishy.
>
> Benchmark                                         Mode  Cnt    Score    Error  Units
> ReifiedListBenchMark.arraylist_integer_get        avgt    9    0.068 ±  0.001  ms/op
> ReifiedListBenchMark.arraylist_integer_iterator   avgt    9    0.069 ±  0.001  ms/op
> ReifiedListBenchMark.reifiedlist_intbox_cursor    avgt    9  516.526 ± 11.903  ms/op
> ReifiedListBenchMark.reifiedlist_intbox_get       avgt    9  523.149 ±  9.194  ms/op
> ReifiedListBenchMark.reifiedlist_intbox_iterator  avgt    9  514.091 ± 18.357  ms/op

I just pushed a change that improves this (by creating a new buffer for
a value loaded from a flattened array of unknown values and doing a bulk
copy). Here is what I get with your benchmark:

ReifiedListBenchMark.arraylist_integer_get        avgt    9  0.246 ± 0.008  ms/op
ReifiedListBenchMark.arraylist_integer_iterator   avgt    9  0.248 ± 0.022  ms/op
ReifiedListBenchMark.reifiedlist_intbox_cursor    avgt    9  1.179 ± 0.015  ms/op
ReifiedListBenchMark.reifiedlist_intbox_get       avgt    9  0.715 ± 0.004  ms/op
ReifiedListBenchMark.reifiedlist_intbox_iterator  avgt    9  0.643 ± 0.013  ms/op

We're likely to improve that some more with future work.

Roland.


More information about the valhalla-dev mailing list