【问题标题】:How can I profile C++ code running on Windows?如何分析在 Windows 上运行的 C++ 代码?
【发布时间】:2020-06-10 13:14:04
【问题描述】:

我有一个 C++ 应用程序,在 windows10(AMD Ryzon 处理器)上运行,我正在进行基准测试和优化。 谁能推荐一个 AMD Ryzen 处理器下的性能分析工具?

【问题讨论】:

  • Windows 的一个问题是它运行多个线程和任务。您的程序可能会运行几次迭代,然后另一个程序运行一段时间,然后再运行另一个,依此类推。对于质量性能检查,您需要弄清楚如何解决这个问题。
  • 你能在调试器或IDE下运行它吗?那就试试this
  • @ThomasMatthews 由于 CPU 涡轮/节流、热负载和其他因素(包括环境室温),情况比这更糟。

标签: c++ windows-10 profiling amd-processor


【解决方案1】:

有一些来自 AMD 的分析器,例如

https://developer.amd.com/amd-uprof/

AMD uProf 支持以下操作系统的 64 位版本:... Microsoft Windows 10(截至 2019 年 5 月更新)

AMD uProf 支持以下应用环境:语言:C、C++、...

AMD uProf profiler 采用基于统计抽样的方法来收集配置文件数据,以识别应用程序中的性能瓶颈。配置文件数据收集可以由 – 6OS 计时器、核心 PMC 事件和 IBS 触发。 AMD uProf 提供用户友好的 UI 来查看和分析配置文件数据,从而有助于优化各种应用程序、驱动程序、游戏引擎等。

因此,它支持硬件和软件事件,并且可以进行采样分析。

还有AMD CodeAnalyst / CodeXLprofilers,不过现在不容易下载https://community.amd.com/thread/159836

Intel VTune 商业分析器也可以在 AMD 芯片上工作,但不能完全支持硬件事件。软件事件应该可以工作。

【讨论】:

  • tthank you for answer 实际上这不是我要寻找的工具,我想要一个显示代码中每个函数的执行时间的工具。
  • Aisha,分析通常以周期性采样(每秒 1000 次)的形式完成,并记录在该采样时刻执行线程(程序)的位置。为了记录每个函数的所有执行时间,每个调用和返回都应该使用额外的代码来记录进入和退出的时间。这将产生巨大的开销。英特尔 PIN 或 valgrind 等一些工具可用于尝试为现有代码构建此类测量(动态重新编译);当可以重新编译代码时,需要编译器工具。你的 C++ 编译器是什么? (具有不同 _mcount 的 Gcc -pg / gprof?)
猜你喜欢
  • 2010-09-27
  • 2013-02-02
  • 2013-01-03
  • 1970-01-01
  • 2011-01-19
  • 2011-06-05
相关资源
最近更新 更多