Expand description
§resource-meter
A lightweight resource usage measurement library for Rust, providing scoped measurement of wall-clock time, user CPU time, and system CPU time.
This crate allows you to track resource usage (CPU and wall time) in a hierarchical or flat manner, making it easy to profile sections of your code. It leverages libc::getrusage
for accurate process resource usage statistics.
§Features
- Scoped measurement using a stack-based API
- Hierarchical (tree) and flat reporting
- Tracks wall time, user CPU time, and system CPU time
- Simple API for integration
- Platform support for Unix-like systems (uses
libc::getrusage
)
§Example
use resource_meter::ResourceMeterStack;
use std::thread::sleep;
use std::time::Duration;
fn main() {
// Create a stack to manage resource measurement scopes
let mut stack = ResourceMeterStack::new();
// Start a measurement scope named "outer"
stack.push("outer");
sleep(Duration::from_millis(100));
// Start a nested measurement scope named "outer/inner"
stack.push("outer/inner");
sleep(Duration::from_millis(200));
stack.pop(); // End "outer/inner"
sleep(Duration::from_millis(50));
stack.pop(); // End "outer"
// Generate and print a hierarchical report
let report = stack.finish();
println!("{}", report);
}
§Usage
- Use
ResourceMeterStack
to manage measurement scopes withpush
/pop
. - Generate a report with
ResourceMeterStack::finish
(tree report) orResourceMeterStack::into_report
(choose flat or tree).
§Main Types
ResourceMeterStack
: Main stack for managing resource measurement scopes.TreeReport
: Hierarchical report of resource usage.UsageMeasurement
: Stores individual usage statistics.
§Platform Support
This crate uses libc::getrusage
and is intended for Unix-like platforms.
§License
Licensed under MIT or Apache-2.0.