Add a reusable benchmark harness for performance-sensitive changes
- Dominant language
- Rust
- Stars
- 197
- Forks
- 92
- Avg merge
- 1d 16h
- Merged PRs (30d)
- 91
Description
### Search before asking
- [x] I searched in the [issues](https://github.com/apache/paimon-rust/issues) and found nothing similar.
### Motivation
### Description
Currently, `paimon-rust` does not seem to have a reusable benchmark harness, such as `cargo bench` targets or a benchmark dev-dependency like Criterion.
I searched existing issues and did not find a general issue for introducing benchmark infrastructure. There are several performance-sensitive changes or discussions where benchmark evidence would be useful:
- #281 included ad-hoc “Benchmark for TableScan” results in the PR description.
- #230 improved Parquet reader performance.
- #217 added statistics for DataFusion scan to improve query performance.
- #378 mentions future performance benchmarks for Mosaic after read compatibility becomes stable.
These examples suggest that benchmarks would help reviewers and contributors evaluate performance-sensitive PRs more consistently. However, without a reusable benchmark setup, performance comparisons are hard to reproduce and are usually left as one-off measurements in PR descriptions.
Would the project be open to adding a benchmark dependency and an initial set of `cargo bench` benchmarks?
This would not need to define final project-wide benchmark policy immediately. It could start as a small, reproducible benchmark harness and evolve as more performance-sensitive areas need coverage.
### Solution
_No response_
### Anything else?
_No response_
### Willingness to contribute
- [x] I'm willing to submit a PR!
Contributor guide
Research direction
No source files or tests are named. Start by reviewing the project's Cargo configuration and the performance context in issues #281, #230, #217, and #378; define a small, reproducible benchmark setup using cargo bench or Criterion. Done means contributors can run the initial benchmarks consistently and use their results to compare performance-sensitive changes.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- performance, tooling
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 48/100