2个版本
0.0.2 | 2023年3月30日 |
---|---|
0.0.1 | 2022年12月13日 |
#566 in 调试
每月 24 次下载
用于 bbscope
15KB
230 行
这是什么?
我需要一个方法来从程序的各个不同部分对代码段进行计时,但用单个列表跟踪它们以便以后输出。例如,我在Web请求期间计时渲染代码、数据库代码和其他代码,然后将输出包含在页面本身中用于调试。
示例
let mut stopwatch = onestop::OneDuration::new(format!("postrender#789"));
some_long_task();
stopwatch.finish();
println!("It took {:?}", stopwatch.duration);
好的,但是...?
您可以使用 std::time::Instant
(此代码使用) 完成上述操作,但现在让我们使用线程安全的共享列表使其更有用
struct Service1 {
timings: OneList<OneDuration> // The other thing in this crate
}
struct Service2 {
timings: OneList<OneDuration>
}
impl Service1 {
fn do_stuff(&self) -> {
onestop!{(self.timings, "service1_dostuff") => {
assert_eq!(4, 4);
}};
}
}
impl Service2 {
fn do_stuff(&self) -> {
onestop!{(self.timings, "service2_dostuff") => {
println!("did service2 things!");
}};
}
}
// Clones of OneList are threadsafe reference-counted pointers to the original list
// stored here in 'all_timings'
let all_timings = OneList::<OneDuration>::new();
let service1 = Service1 { all_timings.clone() };
let service2 = Service2 { all_timings.clone() };
service1.do_stuff();
service2.do_stuff();
// Both go to the same list, which you can then print out somewhere later
assert_eq(2, all_timings.list_copy().len());
但是,真的是这样
是的,这个库基本没有用!
依赖项
~205KB