-
Notifications
You must be signed in to change notification settings - Fork 410
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Column: optimze filter #9670
base: master
Are you sure you want to change the base?
Column: optimze filter #9670
Conversation
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here.
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
1e4d2a2
to
3a82055
Compare
Signed-off-by: Lloyd-Pottiger <[email protected]>
Signed-off-by: Lloyd-Pottiger <[email protected]>
806520b
to
895cea3
Compare
/retest |
Do you compare the performance of different filtration rates. For example, 1%, 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90%, 99%. And set the size of the column to |
100 / 10000 is the filtration rate. |
Add micro-benchmark for column filter: Lloyd-Pottiger#18
|
Signed-off-by: Lloyd-Pottiger <[email protected]>
What problem does this PR solve?
Issue Number: ref #6233
Problem Summary:
What is changed and how it works?
Rewrite
IColumn::filter
interface withavx2
, which can improve at most ~10x performance.Perf test result (larger is better):
$ ./dbms/bench_dbms --benchmark_filter="columnFilter*" 2024-11-27T15:16:36+08:00 Running ./dbms/bench_dbms Run on (72 X 3299.98 MHz CPU s) CPU Caches: L1 Data 32 KiB (x36) L1 Instruction 32 KiB (x36) L2 Unified 1024 KiB (x36) L3 Unified 25344 KiB (x2) Load Average: 11.32, 18.49, 38.43 ---------------------------------------------------------------- Benchmark Time CPU Iterations ---------------------------------------------------------------- columnFilter/sse2_00 3866 ns 3849 ns 182665 columnFilter/avx2_00 2614 ns 2603 ns 270405 columnFilter/sse2_01 22352 ns 22252 ns 32578 columnFilter/avx2_01 4663 ns 4642 ns 159532 columnFilter/sse2_10 147419 ns 146777 ns 4694 columnFilter/avx2_10 15518 ns 15453 ns 45420 columnFilter/sse2_20 215868 ns 214854 ns 3274 columnFilter/avx2_20 25262 ns 25147 ns 29981 columnFilter/sse2_30 284431 ns 283065 ns 2463 columnFilter/avx2_30 30250 ns 30120 ns 24217 columnFilter/sse2_40 345727 ns 344208 ns 2040 columnFilter/avx2_40 35211 ns 35066 ns 19974 columnFilter/sse2_50 388276 ns 386500 ns 1850 columnFilter/avx2_50 41809 ns 41632 ns 17209 columnFilter/sse2_60 360463 ns 358898 ns 1962 columnFilter/avx2_60 47454 ns 47242 ns 14610 columnFilter/sse2_70 306273 ns 304934 ns 2284 columnFilter/avx2_70 52609 ns 52386 ns 13615 columnFilter/sse2_80 249978 ns 248908 ns 2825 columnFilter/avx2_80 61784 ns 61495 ns 12060 columnFilter/sse2_90 180275 ns 179494 ns 3867 columnFilter/avx2_90 70565 ns 70232 ns 11137 columnFilter/sse2_99 48001 ns 47784 ns 15408 columnFilter/avx2_99 47023 ns 46831 ns 15164 columnFilter/sse2_100 153413 ns 152821 ns 4436 columnFilter/avx2_100 148977 ns 148396 ns 4720
Check List
Tests
Side effects
Documentation
Release note