Performance Benchmarks¶
rsylla delivers exceptional performance for ScyllaDB operations.
Performance Overview¶
Based on comprehensive benchmarks with 32 concurrent clients:
| Metric | rsylla | acsylla | cassandra-driver |
|---|---|---|---|
| Read (prepared) | 85,920 ops/s | 71,450 ops/s | 22,160 ops/s |
| Write (prepared) | 81,260 ops/s | 66,720 ops/s | 20,340 ops/s |
| Avg Latency | 0.37-0.43 ms | 0.45-0.54 ms | 1.44-1.67 ms |
| P99 Latency | 1.19-1.26 ms | 1.43-1.53 ms | 5.03-5.50 ms |
Key Findings¶
rsylla is ~3.9x faster than cassandra-driver¶
Benchmark: read_prepared
rsylla: 85,920 ops/sec
acsylla: 71,450 ops/sec
cassandra-driver: 22,160 ops/sec
Performance ratio: 3.88x faster than cassandra-driver
rsylla is ~1.2x faster than acsylla¶
Benchmark: write_prepared
rsylla: 81,260 ops/sec
acsylla: 66,720 ops/sec
Performance ratio: 1.22x faster than acsylla
Why rsylla is Fast¶
- Native Rust Performance
- Built on the official scylla-rust-driver
- Zero-cost abstractions from Rust
-
Efficient memory management
-
Zero-Copy Design
- Minimal data copying between Rust and Python
-
Efficient buffer handling
-
Async Runtime
- Powered by Tokio for efficient I/O
-
Native async/await support
-
Type Safety
- Rust's type system enables optimized code paths
- No runtime type checking overhead
Benchmark Details¶
Test Environment¶
- ScyllaDB running locally (Docker)
- Python 3.11
- 32 concurrent clients
- 60-second test duration
Operations Tested¶
| Operation | Description |
|---|---|
read | Simple SELECT with string concatenation |
read_bind | SELECT with parameter binding |
read_prepared | SELECT using prepared statements |
write | Simple INSERT with string concatenation |
write_bind | INSERT with parameter binding |
write_prepared | INSERT using prepared statements |
Full Results¶
=== RSYLLA ===
read: 72,340 ops/sec (avg: 0.442ms, p99: 1.415ms)
read_bind: 78,560 ops/sec (avg: 0.407ms, p99: 1.303ms)
read_prepared: 85,920 ops/sec (avg: 0.372ms, p99: 1.193ms)
write: 68,420 ops/sec (avg: 0.467ms, p99: 1.495ms)
write_bind: 74,890 ops/sec (avg: 0.427ms, p99: 1.367ms)
write_prepared:81,260 ops/sec (avg: 0.394ms, p99: 1.262ms)
=== ACSYLLA ===
read: 58,120 ops/sec (avg: 0.550ms, p99: 1.761ms)
read_bind: 64,780 ops/sec (avg: 0.493ms, p99: 1.580ms)
read_prepared: 71,450 ops/sec (avg: 0.448ms, p99: 1.434ms)
write: 54,230 ops/sec (avg: 0.590ms, p99: 1.888ms)
write_bind: 60,540 ops/sec (avg: 0.528ms, p99: 1.690ms)
write_prepared:66,720 ops/sec (avg: 0.479ms, p99: 1.534ms)
=== CASSANDRA-DRIVER ===
read: 18,450 ops/sec (avg: 1.734ms, p99: 6.042ms)
read_bind: 20,120 ops/sec (avg: 1.591ms, p99: 5.543ms)
read_prepared: 22,160 ops/sec (avg: 1.444ms, p99: 5.034ms)
write: 16,890 ops/sec (avg: 1.895ms, p99: 6.601ms)
write_bind: 18,540 ops/sec (avg: 1.726ms, p99: 6.011ms)
write_prepared:20,340 ops/sec (avg: 1.573ms, p99: 5.498ms)
Running Benchmarks¶
Prerequisites¶
# Start ScyllaDB
docker run --name scylla -p 9042:9042 -d scylladb/scylla
# Install libraries
pip install rsylla acsylla cassandra-driver
Run Benchmark¶
Options¶
# Quick test
python run_all_benchmarks.py --duration 10
# High concurrency
python run_all_benchmarks.py --concurrency 64
# Specific libraries
python run_all_benchmarks.py --libraries rsylla acsylla
# Custom output
python run_all_benchmarks.py --output results.md
Comparison Summary¶
| Feature | rsylla | acsylla | cassandra-driver |
|---|---|---|---|
| Performance | Best | Very Good | Good |
| Async Support | Native | Native | Thread-based |
| Type Hints | Full | Partial | Limited |
| Maturity | New | Proven | Very Mature |
| Best For | High-performance | Async apps | Compatibility |
When to Use rsylla¶
Choose rsylla when you need:
- Maximum throughput
- Lowest latency
- Modern async/await code
- Type safety
- Production performance