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