Performance: simplify and optimize kth-greatest computation (96% recall at 195 qps) #616
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Related Issue
#611
Changes
This integrates the kth-greatest computation into the ArrayHitCounter, which gets rid of a loop for finding the min and max counts. While we're there, also removing the min count, since that is almost always zero and using an array of shorts for the histograms.
In aggregate, this gets the benchmarks up to 0.96 at 195 qps:
Though they did float around a bit (see the Benchmark commits).
Testing and Validation
Added more unit tests for the ArrayHitCounter.