如何计算ANSI C代码性能?

时间:2012-04-10 14:49:01

标签: c++ c profiling

我在ANSI C中编写了一个简单的代码,现在想要执行一些测量。

我测量了执行时间(在Windows操作系统下使用clock()功能,在Linux操作系统下使用clock_gettime()

现在我想计算一下我的CPU执行多少IPS(每秒指令数),同时运行我的代码。 (是的,我知道MIPS是一个可悲的参数,但即便如此,我想计算它)

很高兴看到,执行多少CPI(每指令周期数),例如添加了3个元素和我执行的其他操作。 谷歌说如何使用计算器计算MIPS的数量,关于我的CPU(它的时钟速度),简单的数学和一堆其他参数(如CPI)的一些知识,但是没有说如何获得那些!

我还没有找到任何能够返回执行例如所需的时钟周期数的C / C ++函数。访问本地变量。 英特尔/ AMD针对现代CPU查找参考手册也存在问题,该手册将提供有关操作码和其他操作的信息。

我手动计算过,我的ANSI C代码需要37次操作,但那些是ANSI C操作,而不是CPU指令。

1 个答案:

答案 0 :(得分:0)

在Windows上获得高精度计时的最简单方法是PerformanceCounter,请参阅How to use QueryPerformanceCounter?
然后,您只需要一些函数来执行您对计时感兴趣的操作。你必须要小心一点缓存等,所以多次运行计算并查看时间分布