2 releases
0.1.9 | Aug 12, 2024 |
---|---|
0.1.8 | Aug 12, 2024 |
#2 in #tsc
28KB
405 lines
Fastant
A drop-in replacement for std::time::Instant
that measures time with high performance and high accuracy powered by Time Stamp Counter (TSC).
Usage
[dependencies]
fastant = "0.1"
fn main() {
let start = fastant::Instant::now();
let duration: std::time::Duration = start.elapsed();
}
Motivation
This library is used by a high performance tracing library fastrace
. The main purpose is to use Time Stamp Counter (TSC) on x86 processors to measure time at high speed without losing much accuracy.
Platform Support
Currently, only the Linux on x86
or x86_64
is backed by Time Stamp Counter (TSC). On other platforms, Fastant falls back to std::time
. If TSC is unstable, it will also fall back to std::time
.
If speed is privileged over accuracy when fallback occurs, you can use fallback-coarse
feature to use coarse time:
[dependencies]
fastant = { version = "0.1", features = ["fallback-coarse"] }
Dependencies
~0.3–1MB
~21K SLoC