yashmayya commented on PR #13758: URL: https://github.com/apache/pinot/pull/13758#issuecomment-2275218314
@gortiz I used a modified version of the mode aggregation benchmark (with some changes to add a case where all values in the block are `null` and deterministic null handling enabled / disabled) that you added in https://github.com/apache/pinot/pull/12227/ and here are the results: Without the optimization from this PR (`_nullPeriod` = `1` implies all the values in a block are `null`): ``` Benchmark (_nullHandlingEnabled) (_nullPeriod) Mode Cnt Score Error Units BenchmarkModeAggregation.test true 1 thrpt 50 46.623 ± 0.180 ops/ms BenchmarkModeAggregation.test true 2 thrpt 50 36.023 ± 0.185 ops/ms BenchmarkModeAggregation.test true 4 thrpt 50 32.064 ± 0.142 ops/ms BenchmarkModeAggregation.test true 8 thrpt 50 31.526 ± 0.212 ops/ms BenchmarkModeAggregation.test true 16 thrpt 50 31.196 ± 0.443 ops/ms BenchmarkModeAggregation.test true 32 thrpt 50 32.062 ± 0.198 ops/ms BenchmarkModeAggregation.test true 64 thrpt 50 31.992 ± 0.215 ops/ms BenchmarkModeAggregation.test true 128 thrpt 50 32.423 ± 0.166 ops/ms BenchmarkModeAggregation.test false 1 thrpt 50 28.642 ± 0.380 ops/ms BenchmarkModeAggregation.test false 2 thrpt 50 27.387 ± 0.258 ops/ms BenchmarkModeAggregation.test false 4 thrpt 50 28.230 ± 0.406 ops/ms BenchmarkModeAggregation.test false 8 thrpt 50 27.588 ± 0.335 ops/ms BenchmarkModeAggregation.test false 16 thrpt 50 27.950 ± 0.275 ops/ms BenchmarkModeAggregation.test false 32 thrpt 50 27.816 ± 0.480 ops/ms BenchmarkModeAggregation.test false 64 thrpt 50 28.263 ± 0.247 ops/ms BenchmarkModeAggregation.test false 128 thrpt 50 27.943 ± 0.175 ops/ms ``` With the optimization from this PR: ``` Benchmark (_nullHandlingEnabled) (_nullPeriod) Mode Cnt Score Error Units BenchmarkModeAggregation.test true 1 thrpt 50 154024.598 ± 641.790 ops/ms BenchmarkModeAggregation.test true 2 thrpt 50 36.364 ± 0.209 ops/ms BenchmarkModeAggregation.test true 4 thrpt 50 32.198 ± 0.148 ops/ms BenchmarkModeAggregation.test true 8 thrpt 50 29.141 ± 0.235 ops/ms BenchmarkModeAggregation.test true 16 thrpt 50 31.579 ± 0.272 ops/ms BenchmarkModeAggregation.test true 32 thrpt 50 32.216 ± 0.154 ops/ms BenchmarkModeAggregation.test true 64 thrpt 50 32.227 ± 0.128 ops/ms BenchmarkModeAggregation.test true 128 thrpt 50 32.264 ± 0.130 ops/ms BenchmarkModeAggregation.test false 1 thrpt 50 27.662 ± 0.308 ops/ms BenchmarkModeAggregation.test false 2 thrpt 50 28.190 ± 0.161 ops/ms BenchmarkModeAggregation.test false 4 thrpt 50 27.893 ± 0.180 ops/ms BenchmarkModeAggregation.test false 8 thrpt 50 28.095 ± 0.144 ops/ms BenchmarkModeAggregation.test false 16 thrpt 50 28.844 ± 0.619 ops/ms BenchmarkModeAggregation.test false 32 thrpt 50 28.177 ± 0.293 ops/ms BenchmarkModeAggregation.test false 64 thrpt 50 28.170 ± 0.169 ops/ms BenchmarkModeAggregation.test false 128 thrpt 50 28.215 ± 0.298 ops/ms ``` So the cases where not all values in a block are null are basically unaffected but there is indeed a huge increase (~3000X) in the throughput for the all nulls case. -- 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. To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org For additional commands, e-mail: commits-h...@pinot.apache.org