【发布时间】:2012-02-04 14:01:07
【问题描述】:
我想使用hardware performance counter,特别是 x86 CPU 来获取缓存未命中或分支错误预测。性能计数器在英特尔 VTune 等高级分析器中大量使用。请不要混淆 Windows 操作系统上的性能计数器。
为了在 C/C++ 程序中使用这些计数器,可以使用 PAPI:http://icl.cs.utk.edu/papi/
这使您可以轻松使用性能计数器,但仅限于 Linux。 PAPI 曾经支持 Windows,但现在不支持。
最近有没有人尝试过 PAPI 或其他 API 在 Windows 上使用硬件性能计数器?
【问题讨论】:
-
介意我问:你在写真正的 bang-on-bits 代码吗?大多数 Windows 应用程序代码都远不及此。
-
我本来打算推荐 VTune,但你已经提出来了。那么它有什么问题呢?
-
不,我正在编写一些分析代码。所以,我需要 API 来编程。 Linux 可以使用 PAPI,但 Windows,我仍在寻找最新的 API 来使用硬件性能计数器。
-
好像没有通用的API。当你需要这个时,你必须构建和使用你自己的驱动程序。由于开源项目无法签署驱动程序,这些项目就消亡了。启用测试签名后,您可以使用自签名驱动程序。
-
psapi 似乎仍然在其最新版本中包含其旧的 Windows 代码,最好更新它并提交补丁(因为我非常怀疑你会找到一个跨平台的 API迄今为止)。
标签: c performance profiling x86 x86-64