我尝试使用flame crate使用Rayon编写的代码来获取一些效果指标:
extern crate flame;
flame::start("TAG-A");
//Assume vec is a Vec<i32>
vec.par_iter_mut().filter(|a| a == 1).for_each(|b| func(b));
//func(b) operates on each i32 and sends some results to a channel
flame::end("TAG-A");
//More code but unrelated
flame::dump_stdout();
这很好,但只提供整个并行迭代器的信息。我想在函数func
上获得一些更精细的细节。
我已尝试在函数中添加一个开始/结束,但运行时信息仅在我调用flame::commit_thread()
时可用,然后它似乎只将其打印到stdout。理想情况下,当我在代码末尾调用dump时,我想打印出没有给定标记的时间。
有没有办法从所有线程转储标签?火焰的文件并不好。