8个版本
0.1.7 | 2024年2月24日 |
---|---|
0.1.6 | 2024年1月24日 |
0.1.4 | 2023年10月20日 |
0.1.3 | 2023年8月29日 |
0.1.1 | 2022年1月6日 |
#119在操作系统
120KB
397 行
minstant
一个高性能、高精度的std::time::Instant
的替代品,它利用TSC测量时间。
用法
[dependencies]
minstant = "0.1"
let start = minstant::Instant::now();
// Code snipppet to measure
let duration: std::time::Duration = start.elapsed();
动机
此库被高性能跟踪库minitrace-rust
使用。主要目的是在x86处理器上使用TSC以高速测量时间,同时保持较高的精度。
平台支持
目前,只有Linux操作系统在minstant
将回退到std::time
。如果TSC不稳定,它也将回退到std::time
。
如果回退发生时速度比精度更重要,可以使用fallback-corase
功能来使用粗略时间
[dependencies]
minstant = { version = "0.1", features = ["fallback-coarse"] }
基准测试
基准测试平台是CentOS 7上的
> cargo criterion
Instant::now()/minstant time: [10.449 ns 10.514 ns 10.619 ns]
Instant::now()/quanta time: [31.467 ns 31.628 ns 31.822 ns]
Instant::now()/std time: [26.831 ns 26.924 ns 27.016 ns]
minstant::Anchor::new() time: [46.987 ns 47.243 ns 47.498 ns]
minstant::Instant::as_unix_nanos() time: [15.287 ns 15.318 ns 15.350 ns]
依赖关系
~1.1–1.7MB
~39K SLoC