剖析C ++ multi

你有没有使用任何分析工具,如英特尔Vtune分析仪?

您对Linux和Windows上的C ++多线程应用程序有何建议? 我主要关心缓存未命中,内存使用情况,内存泄漏和CPU使用情况。

我使用valgrind(仅在UNIX上),但主要用于查找内存错误和泄漏。


以下是多线程应用程序的好工具。 您可以尝试评估副本。

  • 运行时间健全检查工具
  • 线程检查器 - 英特尔线程检查器/ VTune,在这里
  • 内存一致性检查工具(内存使用情况,内存泄漏) - 内存验证程序,这里
  • 性能分析。 (CPU使用率) - AQTime,这里
  • 编辑 :英特尔线程检查器可用于诊断数据竞争,死锁,停滞线程,被遗弃的锁等。请分析结果时有足够的耐心,因为它很容易混淆。

    几点建议:

  • 禁用不需要的功能(在识别死锁的情况下,可以禁用数据竞争,反之亦然)。
  • 根据您的需要使用仪器级别。 像“全功能”和“全图像”等级用于数据竞赛,其中“API导入”可用于死锁检测)
  • 经常使用上下文相关菜单“诊断帮助”。

  • 在Linux上,尝试oprofile。 它支持各种性能计数器。

    在Windows上,AMD的CodeAnalyst(免费,不像VTune)值得一看。 它只支持在AMD硬件上进行事件分析(在Intel CPU上它只是一个方便的基于计时器的分析器)。

    一位同事最近尝试了英特尔Parallel Studio(测试版),并对其进行了评价(在一些代码中发现了一些有趣的与并行相关的问题)。


    VTune为您提供了很多关于处理器的细节,有时我发现很难看到树木。 VTune不会报告内存泄漏。 你需要purify plus,或者如果你可以在Linux上运行,Valgrind可以很好的价格处理内存泄漏。

    VTune展示了两种观点,一种是表格式的,另一种我认为只是销售人员给人留下深刻印象,但没有那么有用。

    对于快速和便宜的选择,我会用valgrind去。 Valgrind也有缓存研磨部分,但我没有使用它,但怀疑它也很好。

    欢呼声,马丁。

    链接地址: http://www.djcxy.com/p/40329.html

    上一篇: Profiling C++ multi

    下一篇: Alternatives to gprof