4 个版本
0.2.2 | 2023 年 3 月 15 日 |
---|---|
0.2.1 | 2023 年 1 月 17 日 |
0.2.0 | 2023 年 1 月 17 日 |
0.1.0 | 2023 年 1 月 13 日 |
在 命令行界面 中排名第 531
每月下载量 39 次
26KB
531 代码行
直觉:一个基于 tui-rs 的终端 UI 的超级简单的分析器。
通过直觉了解您多线程/多组件程序的行为。
直觉是一个分析器,它测量代码块在时间上的平均迭代时间。这个块可以是一行或多行代码。此外,每个块都可以输出自己的模块化日志。
现有的分析器要么更精细/详细,要么更细粒度,但这个提供了易于使用和实用性的良好平衡。这是一个纯 Rust 库,使用终端进行 GUI,因此不需要外部库。
这个分析器特别设计用于在活动激增时快速了解多组件、多线程系统,或者在一段时间内(例如,检测由于数据结构增长或有界 mpsc 通道填满导致的某些减速)。其他像 coz
这样的分析器对于稳态系统的因果分析非常出色,但更难从更动态的系统中获得见解。
示例用法
此示例可在 examples/simple.rs
中找到。
use intuition::{construct_profiler, Dash};
construct_profiler!(MyProgramProfiler for MyProgram: part_1);
const WINDOW_SIZE: usize = 100;
const AVERAGE_HISTORY_SIZE: usize = 1000;
static PROFILER: MyProgramProfiler<WINDOW_SIZE, AVERAGE_HISTORY_SIZE> = MyProgramProfiler::new();
fn main() {
let mut dash = Dash::from_profiler(&PROFILER);
let handle = std::thread::spawn(|| {
let mut i: u64 = 0;
loop {
// do something before iteration which you don't want to time
// Define a block to time
let _new_i: u64 = PROFILER.part_1.iteration(|| {
i += 1;
i
});
// do something with result which you don't want to time
}
});
let dash_handle =
std::thread::spawn(
move || match dash.run(std::time::Duration::from_millis(50)) {
Ok(()) => (),
Err(e) => println!("Dashboard exited with error {e:?}"),
},
);
handle.join().unwrap();
dash_handle.join().unwrap();
}
要退出 tui/dashboard,只需按两次 q
。
依赖项
~3–14MB
~111K SLoC