c++ - 分析 C++ 多线程应用程序

标签 c++ performance multithreading profiling

您是否使用过英特尔 Vtune 分析器等分析工具?

对于 Linux 和 Windows 上的 C++ 多线程应用程序,您有何建议?我主要对缓存未命中、内存使用、内存泄漏和 CPU 使用感兴趣。

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

最佳答案

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

  1. 运行时完整性检查工具
    • 线程检查器——英特尔线程检查器/VTune,here
  2. 内存一致性检查工具(内存使用情况、内存泄漏) - 内存验证器,here
  3. 性能分析。 (CPU使用率) - AQTime , here

编辑:英特尔线程检查器可用于诊断数据竞争、死锁、停滞线程、废弃锁等。请耐心分析结果,因为很容易混淆。

一些提示:

  1. 禁用不需要的功能。(如果发现死锁,可以禁用数据竞争,反之亦然。)
  2. 根据您的需要使用 Instrumentation 级别。 “所有功能”和“完整图像”等级别用于数据竞争,而“API 导入”可用于死锁检测)
  3. 经常使用上下文相关菜单“诊断帮助”。

关于c++ - 分析 C++ 多线程应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/638090/

相关文章:

c++ - 销毁 vector 的 vector

c++ - 将结构传递给 dll

c++ - 当 `virtual` 是一个相当大的开销时,是否有任何经验法则?

performance - 对于非常有状态的游戏/模拟,Haskell 状态与 C++ 相比效率如何?

c# - 如何同时异步执行多个 ping 操作?

c++ - 创建值并将值插入对象的问题

c++ - jconsole 能否用于识别 JNI C++ 对象中的内存泄漏?

javascript - 如何将 rel ="preload"用作 ="style"或 ="script"或提高页面速度的更好方法

c# - 从给定线程获取 SynchronizationContext

java - Eclipse RCP 多线程