【发布时间】:2011-11-29 12:27:15
【问题描述】:
我有一个功能是我的程序的瓶颈。它不需要访问内存,只需要计算。它是内部循环并且被调用了很多次,所以这个函数的任何小收获对我的程序来说都是巨大的胜利。
我有在 PS3 上优化 SPU 代码的背景,您可以在其中获取 SPU 程序并通过管道分析器运行它,您可以将每个汇编语句放在自己的列中,并最大限度地减少函数所花费的周期数。然后你覆盖循环,这样你就可以进一步减少管道依赖。有了这个程序和每个汇编指令所花费的所有周期的列表,我可以比编译器更好地优化。
在不同的平台上,它有我可以注册的事件(缓存未命中、循环等),我可以运行该函数并跟踪 CPU 事件。那也不错。
现在我正在使用带有 Core i7 Intel 处理器的 Visual Studio C++ 2010 在 Windows 上做一个爱好项目。我没有足够的钱来证明支付 VTune 的巨额费用是合理的。
我的问题:
如何在 Windows 上的英特尔处理器的汇编级别分析函数?
我想编译、查看反汇编、获取性能指标、调整我的代码并重复。
【问题讨论】:
-
我很想看看一些实际的代码并提出建议。但是,目前投票以只是重复结束...
-
@Mysticial 当然,获得反汇编很容易,但获得与处理器相关的指标与汇编相关的是棘手的部分。每个平台都有自己独特的一套做事方式。
-
@AlanStokes 谢谢 Alan - 我确实看到了该链接,但我已经确定了哪个函数是我的瓶颈,现在我想要关于如何在装配级别进行基准测试的建议。就像我在帖子中给出的关于在 SPU 和流水线分析器上使用具有循环计数的指令表的示例。
-
另一票不关闭。
标签: c++ windows optimization