您是否使用过英特尔Vtune分析仪等任何分析工具?
您对Linux和Windows上的C ++多线程应用程序有什么建议?我主要对缓存未命中,内存使用,内存泄漏和CPU使用率感兴趣。
我使用valgrind(仅限UNIX),但主要用于查找内存错误和泄漏。
答案 0 :(得分:8)
以下是多线程应用程序的好工具。您可以尝试评估副本。
答案 1 :(得分:5)
在Linux上,尝试oprofile。 它支持各种性能计数器。
在Windows上,AMD的CodeAnalyst(免费,与VTune不同)值得一看。 它仅支持AMD硬件上的事件分析 (在Intel CPU上,它只是一个方便的基于计时器的探查器)。
一位同事最近尝试Intel Parallel Studio(测试版)并对其进行了评价 (它在一些代码中发现了一些有趣的并行性相关问题)。
答案 2 :(得分:3)
VTune为您提供了有关处理器正在做什么的大量细节,有时我发现很难看到树木的木材。 VTune不会报告内存泄漏。你需要purify plus,或者如果你可以在Linux机器上运行,valgrind对于内存泄漏是有利的,并且价格合理。
VTune显示两个视图,一个是表格式视图,另一个我认为只是让销售人员给人留下深刻印象但不是那么有用。
为了快速而便宜的选择,我会选择valgrind。 Valgrind也有一个缓存研磨部分,但我没有使用它,但也怀疑它非常好。
欢呼声, 马丁。
答案 3 :(得分:2)
我将为valgrind添加另一个答案,尤其是带有UI的callgrind部分。它可以通过分析每个线程的缓存未命中等来处理多个线程。它们还有一个名为helgrind的多线程错误检查器,但我从来没有使用它,也不知道它有多好。
答案 4 :(得分:2)
您可以试用AMD CodeXL的CPU分析器。它是免费的,适用于Windows和Linux。
AMD CodeXL的CPU分析器取代了不再支持的CodeAnalyst工具(上面给出的答案在timday中提到)。
有关详细信息和下载链接,请访问:AMD CodeXL web page。
答案 5 :(得分:1)
Rational PurifyPlus套件包括经过充分验证的检漏仪和非常好的分析仪。我不确定它是否会降低到缓存未命中的水平 - 你可能需要VTune。
PurifyPlus可以在各种Unices和Windows上使用,因此它应该满足您的要求,但不幸的是与Valgrind相比,它不是免费的。
答案 6 :(得分:1)
对于简单的分析gprof非常好..