【发布时间】:2012-03-10 21:02:31
【问题描述】:
我正在尝试测量我的 CPU 执行特定指令所花费的周期数(应该花费一个 CPU 周期的指令),并且输出必须是周期长度(CPU 完成一个指令所花费的时间)循环)。 首先,我的 CPU 是 2.1GHz,这意味着我的计算机上的一个周期长度单位是 1/2100,对吗? 另外 - 我正在使用getTimeOfDay 以微秒为单位测量时间,并计算 1,000,000 次迭代的平均值。 因此,如果我没记错的话,我想要的输出必须是 result*2100 (为了得到它的周期长度)。我对吗? 谢谢!
P.S 不知道是否重要,但我是用 cpp 写的
【问题讨论】:
-
您认为
getTimeOfDay()需要多少个时钟周期?另外,您为什么想知道这些信息?您可能可以在英特尔网站(或您分析的芯片制造商生产的任何制造商)的某处查找每条指令所需的周期数。您自己尝试这样做是不可能的。 -
我认为唯一有意义的性能衡量标准是执行操作的时间(而不是周期)。所花费的时间和周期都取决于 CPU/机器架构以及您自己的程序(例如,它在内存中做了多少“长”跳转)。然而,时间是大多数人会注意到的。
-
@KerrekSB,让它成为一个答案。简单但正确。
-
我改写了我的问题,希望现在更有意义
-
Callgrind + Kcachegrind 可以帮助您分析您的应用程序。