用每 * 行 * 代码的执行时间分析Rust?

tzxcd3kk  于 2023-01-09  发布在  其他
关注(0)|答案(2)|浏览(146)

我已经分析了我的Rust代码,发现一个处理器密集型函数占用了很大一部分时间。由于我无法将该函数分解为更小的部分,所以我希望可以看到函数中的哪一行占用了哪一部分时间。目前我已经尝试了CLion的Rust分析器,但它没有该功能。
最好是在MacOS上运行该工具,因为我没有Windows/Linux机器(虚拟化除外)。
P. S. Visual Studio似乎有这个特性;但我使用的是Rust. https://learn.microsoft.com/en-us/visualstudio/profiling/how-to-collect-line-level-sampling-data?view=vs-2017它具有:
行级采样是探查器确定处理器密集型函数(如具有高独占样本的函数)代码中处理器必须花费大部分时间的位置的能力。
谢谢您的建议!

    • EDIT**:使用C++,我确实看到了源代码行级别的信息。例如,下面的玩具显示,"for"循环占用了大函数中的大部分时间。但我使用的是Rust ...

s8vozzvw

s8vozzvw1#

一旦编译完成,Rust的“行”就不存在了。优化器的工作是完全重新组织你写的代码,并找到最小的机器码,它的行为与你的意图相同。
函数通常是内联的,所以即使测量函数所花费的时间也可能给予不正确的结果--或者,如果您阻止程序内联,则会改变程序的性能特征。

ippsafx7

ippsafx72#

要获得perf annotateperf report的源代码注解,你需要在你的cargo toml中使用debug=2编译。如果你还想要标准库函数的源代码注解,你还需要将-Zbuild-std传递给cargo(需要每夜一次)。

相关问题