A benchmark library.
- Stable rust (no black_box)
- Beautiful output
- Async support
- Custom async runtime
- Memory usage
- Custom formatting
- Intuitive numerical units
- Support custom memory allocator
$ cargo test --release --color=always -q --package bench-rs --test bench --no-fail-fast -- --test-threads=1 --nocapture
Look ./tests/bench.rs
I don't know how to implement the black box.
Please use core::hint::black_box. (unstable)
If you have a better idea, welcome to submit a pull request or open an issue
In order to detect Memory usage, bench-rs
modified global_allocator.
This will make it impossible to use other allocators.
If you need to use other allocator:
Change your allocator: (if your allocator is std::alloc::System
)
use std::alloc::System;
use bench_rs::{TrackAllocator, new_allocator};
#[global_allocator]
pub static GLOBAL: TrackAllocator<System> = new_allocator!(System);
Turn off default features:
[dependencies]
bench-rs = { version = "*", default-features = false }
Import the allocator named GLOBAL
:
use bench_rs::bench;
use yourlib::GLOBAL;
#[bench]
fn ...
If your allocator name is not GLOBAL
, please set its alias to GLOBAL
:
use yourlib::OtherAllocator as GLOBAL
Because the bencher-macro will look for GLOBAL.counter()
and GLOBAL.peak()
at the same level of the bench function.
I am a rust beginner, please correct me if the code is bad. Thank you
Contributions welcome