您是否使用过英特尔Vtune分析仪等任何分析工具?
您对Linux和Windows上的C++多线程应用程序有什么建议?我主要对缓存未命中,内存使用,内存泄漏和CPU使用率感兴趣.
我使用valgrind(仅在UNIX上),但主要用于查找内存错误和泄漏.
以下是多线程应用程序的好工具.您可以尝试评估副本.
运行时健全性检查工具
线程检查器 - 英特尔线程检查器/ VTune,在这里
内存一致性检查工具(内存使用,内存泄漏) - 内存验证器,这里
绩效分析.(CPU使用率) - AQTime,这里
编辑:英特尔线程检查器可用于诊断数据竞争,死锁,停滞的线程,废弃的锁等.请分析结果有很多耐心,因为它很容易混淆.
几点提示:
禁用不需要的功能.(如果识别死锁,可以禁用数据竞争,反之亦然.)
根据您的需要使用仪器级别.像"All Function"和"Full Image"这样的级别用于数据竞争,其中"API Imports"可用于死锁检测)
经常使用上下文相关菜单"诊断帮助".
在Linux上,尝试oprofile.它支持各种性能计数器.
在Windows上,AMD的CodeAnalyst(免费,与VTune不同)值得一看.它仅支持AMD硬件上的事件分析(在Intel CPU上它只是一个方便的基于计时器的分析器).
一位同事最近尝试了英特尔Parallel Studio(测试版)并对其进行了评价(它在某些代码中发现了一些有趣的并行性相关问题).