Skip to content

perf: extend string IN-list pruning benchmark coverage - #24836

Open
goutamadwant wants to merge 1 commit into
apache:mainfrom
goutamadwant:perf-24707-in-list-pruning-benchmarks
Open

perf: extend string IN-list pruning benchmark coverage#24836
goutamadwant wants to merge 1 commit into
apache:mainfrom
goutamadwant:perf-24707-in-list-pruning-benchmarks

Conversation

@goutamadwant

Copy link
Copy Markdown
Contributor

Which issue does this PR close?

Rationale for this change

The string IN-list pruning benchmark only covered domain sizes 20, 21, 256, and 1,024 with a fixed 4,096 pruning containers. This did not provide the small-list or container-scaling measurements needed by the follow-up work in #24709 and #24710.

This PR extends the benchmark before making any production threshold change, following the contributor guide's recommendation to isolate benchmark additions from the optimization they are intended to evaluate.

What changes are included in this PR?

  • Add domain sizes 1, 2, 4, 8, and 16 while retaining the existing boundary and large-domain cases.
  • Evaluate each domain at 16, 256, and 4,096 pruning containers.
  • Keep construction benchmarks independent of container count.
  • Preserve the existing 4,096-container Criterion benchmark IDs so historical baselines remain comparable.
  • Validate both representations produce the same pruning results for every evaluation matrix cell outside the timed loop.

The production pruning implementation and its current threshold are unchanged.

What is the testing strategy for this PR?

  • ./dev/rust_lint.sh

  • cargo test --locked -p datafusion-pruning (95 tests passed)

  • Extended workspace test suite:

    RUST_BACKTRACE=1 cargo test --locked --profile ci --exclude datafusion-examples --exclude datafusion-benchmarks --exclude datafusion-cli --workspace --lib --tests --bins --features avro,json,backtrace,extended_tests,recursive_protection,parquet_encryption
  • Full 72-case Criterion matrix:

    cargo bench --locked --profile release-nonlto -p datafusion-pruning --bench string_in_list_pruning -- --sample-size 10 --warm-up-time 0.1 --measurement-time 0.2 --noplot

Are there any user-facing changes?

No. This PR only extends benchmark coverage.

@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 81.57%. Comparing base (45b2f73) to head (b66ac16).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #24836      +/-   ##
==========================================
- Coverage   81.58%   81.57%   -0.01%     
==========================================
  Files        1123     1123              
  Lines      406610   406610              
  Branches   406610   406610              
==========================================
- Hits       331716   331708       -8     
- Misses      55457    55460       +3     
- Partials    19437    19442       +5     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

2 participants