16 个版本 (9 个重大更新)
0.11.0 | 2020年7月8日 |
---|---|
0.9.0 | 2020年3月27日 |
0.8.2 | 2019年11月18日 |
0.5.0 | 2018年9月14日 |
0.3.1 | 2018年3月7日 |
#162 in 性能分析
每月49次下载
15KB
268 代码行
Tempus Fugit
这是一个围绕测量执行某些操作所需时间的概念运行的 Rust crate。
方便是这里的游戏名称,特别是通过赋予依赖的 crate 执行以下两个操作
-
以纳秒[1]分辨率测量任何表达式的wall-clock时间
[dependencies] tempus_fugit = "0.10"
#[macro_use] extern crate tempus_fugit; use std::fs::File; use std::io::Read; use tempus_fugit::Measurement; fn main() { let (contents, measurement) = measure! {{ let mut file = File::open("Cargo.lock") .expect("failed to open Cargo.lock"); let mut contents = vec![]; file.read_to_end(&mut contents) .expect("failed to read Cargo.lock"); String::from_utf8(contents) .expect("failed to extract contents to String") }}; println!("contents: {:?}", contents); println!("opening and reading file took {}", measurement); }
measure!
宏返回一个包含执行表达式(在这种情况下是一个块)的结果的元组,以及一个Measurement
,表示表达式执行所需的时间。 -
以人类可读的方式显示
Measurement
。对于Measurement
有一个Display
实现,所以这就像使用例如format!("{}", measurement)
格式化值一样简单。
Measurement
类型还具有 Ord
和 Eq
的 impl,这使得比较和排序变得容易。
此外,还有通过 Serde 的可选支持进行反序列化。这可以通过在 crate 的 Cargo.toml
中使用以下内容激活
[dependencies]
tempus_fugit = { version = "0.10", features = ["enable_serde"] }
[1] 虽然会计是以纳秒分辨率进行的,但实际上分辨率可能由操作系统限制到更粗的粒度。
文档
API 文档位于 此处。
依赖关系
~1–2MB
~32K SLoC