src/redisearch_rs/varint_bencher/README.md
A benchmarking suite for analyzing varint (variable-length integer) encoding performance and memory efficiency in Rust, focusing on space usage optimization and encoding characteristics.
This crate provides:
cargo bench for detailed timing analysisRun memory analysis:
cd src/redisearch_rs/varint_bencher
cargo run --release
Run performance benchmarks:
cargo bench
The main binary analyzes space efficiency of varint encoding:
cargo run --release
Expected output:
Varint Encoding Analysis:
- Raw data size: 7.824 KB (2003 u32 values)
- Varint encoded size: 4.451 KB (1.76x compression)
- Field mask encoded size: 5.817 KB (1.35x compression)
- Space savings: 43.1% (varint), 25.6% (field mask)
Encoding Efficiency Breakdown:
- 1-byte encodings: 100 (5.0%) - values 0-127
- 2-byte encodings: 200 (10.0%) - values 128-16,383
- 3-byte encodings: 400 (20.0%) - values 16,384-2,097,151
- 4-byte encodings: 200 (10.0%) - values 2,097,152-268,435,455
- 5-byte encodings: 100 (5.0%) - values 268,435,456+
- Average bytes per value: 2.22
Run `cargo bench` for detailed performance benchmarks.
For detailed timing analysis, use criterion benchmarks:
# All benchmarks
cargo bench
# Specific benchmark groups
cargo bench encode
cargo bench decode
cargo bench "vector writer"
# View HTML reports
open target/criterion/report/index.html
varint_bencher/
├── src/
│ ├── lib.rs # Public API
│ ├── main.rs # Memory usage analysis binary
│ └── bencher.rs # Performance benchmarking utilities
├── benches/ # Criterion performance benchmarks
└── Cargo.toml
The tool separates concerns:
cargo bench (statistical timing with
criterion)Varint (variable-length integer) encoding uses a compact representation where:
This makes varint particularly effective for data sets with many small integer values, which is common in search indexes and data compression scenarios.