首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在汇编级分析C++函数?

如何在汇编级分析C++函数?
EN

Stack Overflow用户
提问于 2011-10-03 02:50:06
回答 3查看 2K关注 0票数 18

我有一个函数,它是我的程序的瓶颈。它不需要访问内存,只需要计算。它是内部循环,调用了很多次,所以这个函数的任何小收益都是我的程序的大胜利。

我有在PS3上优化SPU代码的背景,在那里,您可以将SPU程序通过管道分析器运行,在流水线分析器中,您可以将每个汇编语句放在它自己的列中,并最大限度地减少函数所需的周期。然后覆盖循环,这样就可以进一步最小化管道依赖。有了这个程序和每个汇编指令所占用的所有周期的列表,我可以比编译器更好地进行优化。

在不同的平台上,它有我可以注册的事件(缓存未命中、周期等)。我可以运行函数并跟踪CPU事件。这也很不错。

现在,我正在做一个业余爱好项目,使用的是采用i7英特尔核心处理器的Visual Studio2010 C++。我没有足够的钱来证明支付VTune的巨大成本是合理的。

我的问题:

如何在汇编级别评测Windows上英特尔处理器的函数?

我想编译,查看反汇编,获得性能指标,调整我的代码,并重复。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-10-03 03:11:43

有一些很棒的免费工具可用,主要是AMD的CodeAnalyst (从我在我的i7和我的phenom上的经验来看,它在英特尔处理器上有一点障碍,因为它不能访问直接的硬件特定计数器,尽管这可能是糟糕的配置)。

然而,一个鲜为人知的工具是Intel Architecture Code Analyser (它像CodeAnalyst一样是免费的),它类似于你所描述的spu工具,因为它逐行详细地描述了延迟,吞吐量和端口压力(基本上请求被分派到ALU,MMU等),用于你的程序组装。Stan Melax在今年的GDC上给出了一个很好的talk和x86优化,标题是“热点,失败和失败:到金属的cpu优化”。

英特尔还有一些与IACA相同的工具,在their experimental/what-if code site的性能调优部分,例如PTU,它是(或曾经) VTune的实验性演变,在我看来,它是免费的。

这也是一个好主意,已阅读英特尔优化手册之前,潜心于此。

编辑:正如Ben指出的,对于较老的处理器,计时可能不正确,但使用Agner Fog's Optimization manuals可以很容易地弥补这一点,它还包含许多其他的gem。

票数 11
EN

Stack Overflow用户

发布于 2011-10-03 16:43:29

票数 1
EN

Stack Overflow用户

发布于 2011-10-03 05:41:04

从你的描述听起来你的问题可能是embarrassingly parallel,你有没有考虑过使用ppl的parallel_for

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7628476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档