Performance First
World-class performance with industry-leading benchmarks:
- Counter: 18ns/op (54M ops/sec) - 5x faster than competitors
- Gauge: 0.6ns/op (1635M ops/sec) - 30x faster than competitors
- Timer: 46ns/op (21M ops/sec) - 10x faster than competitors
- Memory: 64 bytes per metric (cache-aligned, 4x smaller footprint)
Features
Core Metrics
- 🔢 Counters - Atomic increment/decrement with overflow protection
- 📊 Gauges - IEEE 754 atomic floating-point with mathematical operations
- ⏱️ Timers - Nanosecond precision with RAII guards and batch recording
- 📈 Rate Meters - Sliding window rates with burst detection and API limiting
- 💾 System Health - Built-in CPU, memory, and process monitoring
Advanced Features
- ** Lock-Free** - Zero locks in hot paths, pure atomic operations
- ** Async Native** - First-class async/await support with zero-cost abstractions
- ** Resilience** - Circuit breakers, adaptive sampling, and backpressure control
- ** Cross-Platform** - Linux, macOS, Windows with optimized system integrations
- ** Cache-Aligned** - 64-byte alignment prevents false sharing
Installation
Add to your Cargo.toml
:
[]
= "0.5.1"
# Optional features
= { = "0.5.1", = ["async"] }
Quick Start
use ;
// Initialize once at startup
init;
// Counters - fastest operations (18ns)
metrics.counter.inc;
metrics.counter.add;
// Gauges - sub-nanosecond operations (0.6ns)
metrics.gauge.set;
metrics.gauge.add;
// Timers - automatic RAII timing
// Or time a closure
let result = metrics.time;
// System health monitoring
let cpu = metrics.system.cpu_used;
let memory = metrics.system.mem_used_mb;
// Rate limiting and burst detection
metrics.rate.tick;
if metrics.rate.is_over_limit
Advanced Usage
Async Support
use ;
// Async timing with zero overhead
let result = metrics.timer.time_async.await;
// Batched async updates
let mut batch = new;
batch.counter_inc;
batch.gauge_set;
batch.flush;
Resilience Features
use ;
// Adaptive sampling under load
let sampler = new;
if sampler.should_sample
// Circuit breaker protection
let breaker = new;
if breaker.is_allowed else
System Monitoring
let health = metrics.system;
println!;
println!;
println!;
// Process-specific metrics
println!;
println!;
Benchmarks
Run the included benchmarks to see performance on your system:
# Basic performance comparison
# Comprehensive benchmarks
# Cross-platform system tests
Sample Results (M1 MacBook Pro):
Counter Increment: 18.37 ns/op (54.43 M ops/sec)
Gauge Set: 0.61 ns/op (1635.77 M ops/sec)
Timer Record: 46.37 ns/op (21.56 M ops/sec)
Mixed Operations: 78.19 ns/op (12.79 M ops/sec)
Architecture
Lock-Free Design
- Atomic Operations: All metrics use
Relaxed
ordering for maximum performance - Cache-Line Alignment: 64-byte alignment eliminates false sharing
- Compare-and-Swap: Lock-free min/max tracking in timers
- Thread-Local Storage: Fast random number generation for sampling
Memory Layout
Zero-Cost Abstractions
- RAII Timers: Compile-time guaranteed cleanup
- Async Guards: No allocation futures for timing
- Batch Operations: Vectorized updates for efficiency
Testing
Comprehensive test suite with 87 unit tests and 2 documentation tests:
# Run all tests
# Test with all features
# Run only bench-gated tests (feature-flagged and ignored by default)
# Run benchmarks (Criterion)
# Check for memory leaks (with valgrind)
Cross-Platform Support
Tier 1 Support:
- ✅ Linux (x86_64, aarch64)
- ✅ macOS (x86_64, Apple Silicon)
- ✅ Windows (x86_64)
System Integration:
- Linux:
/proc
filesystem,sysinfo
APIs - macOS:
mach
system calls,sysctl
APIs - Windows: Performance counters, WMI integration
Graceful Fallbacks:
- Unsupported platforms default to portable implementations
- Feature detection at runtime
- No panics on missing system features
Comparison
Library | Counter ns/op | Gauge ns/op | Timer ns/op | Memory/Metric | Features |
---|---|---|---|---|---|
metrics-lib | 18.37 | 0.61 | 46.37 | 64B | ✅ Async, Circuit breakers, System monitoring |
metrics-rs | 85.2 | 23.1 | 167.8 | 256B | ⚠️ No circuit breakers |
prometheus | 156.7 | 89.4 | 298.3 | 1024B+ | ⚠️ HTTP overhead |
statsd | 234.1 | 178.9 | 445.2 | 512B+ | ⚠️ Network overhead |
Configuration
Feature Flags
[]
= { = "0.5.1", = [
"async", # Async/await support (requires tokio)
"histogram", # Advanced histogram support
"all" # Enable all features
]}
Runtime Configuration
use ;
let config = Config ;
init_with_config;
Contributing
We welcome contributions! Please see our Contributing Guide.
Development Setup
# Clone repository
# Run tests
# Run benchmarks
# Check formatting and lints
License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
Links
- 📚 Documentation
- 📦 Crates.io
- 🐛 Issues
- 💬 Discussions