[Enhancement] optimize harmonic mean evaluation in hll::estimate_cardinality #16351
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.
What type of PR is this:
Which issues of this PR fixes :
Fixes #
Problem Summary(Required) :
Checklist:
Bugfix cherry-pick branch check:
Harmonic mean evaluation in estimate_cardinality is quite slow, code as follows, 3 other choices are tried to speed up this code snippet.
notice: exp256_ps comes from https://github.com/reyoung/avx_mathfun
Micro-benchmarks are conducted on these functions, it shows that choice 4 is the best. choice 4 outperform original implemenation 7.74X.
NOTICE: in BM_calc_harmonic_mean{n}_{m}, n means which choice, m means the function as applied to std::vector<int8_t> of length 2^m.