[bench] Replace pure-Rust snap with C++ snappy library for parquet (de)compression - #9528
[bench] Replace pure-Rust snap with C++ snappy library for parquet (de)compression#9528Dandandan wants to merge 7 commits into
Conversation
Use snappy_src (C++ snappy bindings) for raw snappy compress/decompress instead of the pure-Rust snap crate, while keeping snap as a dependency for CLI framed format support. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
run benchmark arrow_reader_clickbench |
|
🤖 |
|
Benchmark script failed with exit code 101. Last 10 lines of output: Click to expand |
Install g++ in CI setup-builder to provide libstdc++ needed by snappy_src. Move snappy_src to non-wasm32 target dependency and add pure-Rust snap fallback for wasm32 targets. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
run benchmark arrow_reader_clickbench |
|
🤖 |
|
Benchmark script failed with exit code 101. Last 10 lines of output: Click to expand |
|
run benchmark arrow_reader_clickbench CXXSTDLIB=c++ |
|
🤖 Hi @Dandandan, thanks for the request (#9528 (comment)).
Please choose one or more of these with You can also set environment variables on subsequent lines: Unsupported benchmarks: CXXSTDLIB=c++. |
|
run benchmark arrow_reader_clickbench |
|
🤖 |
|
Benchmark script failed with exit code 101. Last 10 lines of output: Click to expand |
|
run benchmark arrow_reader_clickbench |
|
🤖 |
|
Benchmark script failed with exit code 101. Last 10 lines of output: Click to expand |
|
I will install libstdc++ on the runner |
|
run benchmark arrow_reader_clickbench |
|
🤖 |
|
Benchmark script failed with exit code 101. Last 10 lines of output: Click to expand |
|
run benchmarks |
|
Benchmark job started for this request (job |
|
Benchmark for this request failed. Last 20 lines of output: Click to expand |
|
Benchmark for this request failed. Last 20 lines of output: Click to expand |
|
Benchmark for this request failed. Last 20 lines of output: Click to expand |
|
Benchmark for this request failed. Last 20 lines of output: Click to expand |
Removed link-cplusplus dependency from Cargo.toml.
|
run benchmark arrow_reader_clickbench |
|
🤖 Arrow criterion benchmark running (GKE) | trigger CPU Details (lscpu)Comparing snappy_cpp (c07c455) to c194e54 (merge-base) diff File an issue against this benchmark runner |
|
🤖 Arrow criterion benchmark completed (GKE) | trigger Instance: CPU Details (lscpu)Details
Resource Usagebase (merge-base)
branch
File an issue against this benchmark runner |
- Add `snappy_cpp` feature flag that enables C++ snappy via snappy_src - Default `snap` feature uses pure-Rust snap crate (no C++ compiler needed) - Revert parquet-testing submodule to match master - Fix clippy uninit_vec warnings in C++ snappy codec Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
That 15-20% is pretty compelling |
|
run benchmark arrow_reader_clickbench |
|
🤖 Arrow criterion benchmark running (GKE) | trigger CPU Details (lscpu)Comparing snappy_cpp (226f5fb) to 9d0e8be (merge-base) diff File an issue against this benchmark runner |
|
Benchmark for this request failed. Last 20 lines of output: Click to expandFile an issue against this benchmark runner |
Somehow snappy_cpp seemed to be worse on the runner compared to rust, so it's mixed. I did some AI-guided optimization here BurntSushi/rust-snappy#64 which yielded ~30% improvements on the benchmarks (both locally and in runner) 🤯 |
|
Thank you for your contribution. Unfortunately, this pull request is stale because it has been open 60 days with no activity. Please remove the stale label or comment or this will be closed in 7 days. |
#9530
Use snappy_src (C++ snappy bindings) for raw snappy compress/decompress instead of the pure-Rust snap crate, while keeping snap as a dependency for CLI framed format support.
Getting some good perf numbers here.
Which issue does this PR close?
Rationale for this change
What changes are included in this PR?
Are these changes tested?
Are there any user-facing changes?