【发布时间】:2013-07-17 20:47:24
【问题描述】:
有没有办法我可以编写一个“工具”,它可以分析从 C/C++ 程序生成的 x86 汇编语言并以这样一种方式测量性能,无论我在 1GHz 还是 3GHz 上运行它都没有关系处理器?
我更多地考虑指令吞吐量?我怎么能写出这样的工具?有可能吗?
【问题讨论】:
-
好吧,如果您只使用相对度量,那么您可以选择单个处理器(忽略处理器差异)并运行多个版本。一旦您将其中一个用作基线,其余的将与测试运行的实际速度无关。注意:此评论中大量挥手!!!!
-
您可以编写一个工具来分析来自算法的两个版本的代码,并且在一定程度上可以确定哪个会更快,但通常不可能将其设为静态对数据局部性等事物的预测。
-
不可能,x86 变体太多,甚至在单个芯片中也有太多其他事情正在发生,无法获得相关答案。根据编译器选项、操作系统和其他因素,同一台机器上的相同代码可以运行截然不同的速度。要编写工具,您需要访问芯片内部结构以及对主板和外围设备的整个架构进行建模,只需购买几台不同的计算机并在您获得基准测试时使用就更容易和更便宜硬件。
-
处理器本身在今天只是性能方程式的一小部分。处理器速度与内存和其他项目对性能的影响很大,因此例如 1ghz 与 3ghz 预计不会是线性差异。
标签: c++ performance optimization assembly cpu