josiahyan commented on pull request #8214: URL: https://github.com/apache/arrow/pull/8214#issuecomment-698085225
I've updated the PR to cache the capacities, and recompute it whenever it is changed; please take a look again. Here are the benchmarks that seemed to have shown some change (>5% either way) in an initial quick run. Any slowdown seems to be minor or within the error bounds. Manipulation functions (set*) were improved as expected, and so was a dictionary encoder benchmark. Before (152f8b08a70d403eae78ebdc89814be248008a53) ``` Benchmark (numThreads) Mode Cnt Score Error Units o.a.a.algorithm.search.ParallelSearcherBenchmarks.searchBenchmark 1 avgt 15 1656.614 ± 2.424 us/op o.a.a.algorithm.search.ParallelSearcherBenchmarks.searchBenchmark 2 avgt 15 2123.750 ± 72.633 us/op o.a.a.algorithm.search.ParallelSearcherBenchmarks.searchBenchmark 5 avgt 15 942.920 ± 4.585 us/op o.a.a.algorithm.search.ParallelSearcherBenchmarks.searchBenchmark 10 avgt 15 553.499 ± 17.866 us/op o.a.a.algorithm.search.ParallelSearcherBenchmarks.searchBenchmark 20 avgt 15 572.557 ± 16.074 us/op o.a.a.algorithm.search.ParallelSearcherBenchmarks.searchBenchmark 50 avgt 15 373.616 ± 42.984 us/op o.a.a.algorithm.search.ParallelSearcherBenchmarks.searchBenchmark 100 avgt 15 358.959 ± 21.536 us/op o.a.a.memory.util.ArrowBufPointerBenchmarks.compareBenchmark N/A avgt 15 53.190 ± 3.987 ns/op o.a.a.vector.BitVectorHelperBenchmarks.loadValidityBufferAllOne N/A avgt 15 329.615 ± 14.539 ns/op o.a.a.vector.DecimalVectorBenchmarks.setBigEndianArrowBufBenchmark N/A avgt 15 15.229 ± 0.174 us/op o.a.a.vector.IntBenchmarks.setIntDirectly N/A avgt 15 11.708 ± 0.397 us/op o.a.a.vector.IntBenchmarks.setWithValueHolder N/A avgt 15 11.217 ± 0.092 us/op o.a.a.vector.IntBenchmarks.setWithWriter N/A avgt 15 22.418 ± 0.441 us/op o.a.a.vector.dictionary.DictionaryEncoderBenchmarks.testEncode N/A avgt 15 37998.387 ± 361.695 ns/op ``` After ``` Benchmark (numThreads) Mode Cnt Score Error Units o.a.a.algorithm.search.ParallelSearcherBenchmarks.searchBenchmark 1 avgt 15 1656.956 ± 2.462 us/op o.a.a.algorithm.search.ParallelSearcherBenchmarks.searchBenchmark 2 avgt 15 2170.146 ± 72.324 us/op o.a.a.algorithm.search.ParallelSearcherBenchmarks.searchBenchmark 5 avgt 15 1004.663 ± 97.292 us/op o.a.a.algorithm.search.ParallelSearcherBenchmarks.searchBenchmark 10 avgt 15 589.840 ± 58.153 us/op o.a.a.algorithm.search.ParallelSearcherBenchmarks.searchBenchmark 20 avgt 15 534.463 ± 52.171 us/op o.a.a.algorithm.search.ParallelSearcherBenchmarks.searchBenchmark 50 avgt 15 372.424 ± 41.733 us/op o.a.a.algorithm.search.ParallelSearcherBenchmarks.searchBenchmark 100 avgt 15 358.727 ± 21.764 us/op o.a.a.memory.util.ArrowBufPointerBenchmarks.compareBenchmark N/A avgt 15 50.731 ± 4.514 ns/op o.a.a.vector.BitVectorHelperBenchmarks.loadValidityBufferAllOne N/A avgt 15 326.927 ± 3.719 ns/op o.a.a.vector.DecimalVectorBenchmarks.setBigEndianArrowBufBenchmark N/A avgt 15 4.807 ± 0.050 us/op o.a.a.vector.IntBenchmarks.setIntDirectly N/A avgt 15 1.681 ± 0.003 us/op o.a.a.vector.IntBenchmarks.setWithValueHolder N/A avgt 15 1.865 ± 0.017 us/op o.a.a.vector.IntBenchmarks.setWithWriter N/A avgt 15 1.657 ± 0.012 us/op o.a.a.vector.dictionary.DictionaryEncoderBenchmarks.testEncode N/A avgt 15 27574.581 ± 215.370 ns/op ``` ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org