如何计算 ANSI C 代码性能?
Posted
技术标签:
【中文标题】如何计算 ANSI C 代码性能?【英文标题】:How to calculate ANSI C code performance? 【发布时间】:2012-04-10 14:49:01 【问题描述】:我已经用 ANSI C 编写了一个简单的代码,现在想要执行一些测量。
我测量了执行时间(在 Windows 操作系统下使用clock()
函数,在 Linux 操作系统下使用clock_gettime()
)。
现在我想计算一下,在运行我的这段代码时,我的 CPU 执行了多少 IPS(每秒指令)。 (是的,我知道MIPS是个可怜的参数,但即使这样,我也想计算一下)
也很高兴看到执行例如多少个 CPI(每条指令周期)。添加 3 个元素和我执行的其他操作。 谷歌说如何使用计算器计算 MIPS 的数量,关于我的 CPU(它的时钟速度)的一些知识,简单的数学和一堆其他参数(如 CPI),但没有说明如何获得这些!
我还没有找到任何可以返回执行所需时钟周期数的 C/C++ 函数,例如访问局部变量。 查找 Intel/AMD 的现代 CPU 参考手册也是一个问题,其中包含有关操作码和其他信息的信息。
我已经手动计算,我的 ANSI C 代码需要 37 次操作,但这些是 ANSI C 操作,而不是 CPU 指令。
【问题讨论】:
你看过右边的“相关”列表吗? @phresnel - 其中很多是针对 MIPS 处理器的,因为 OP 提到了我认为他们没有使用的 Windows。 Gzegorz - 你可能想删除 MIPS 标签 这些东西没有在任何地方列出的原因是因为它们是可变的。 “访问局部变量所需的时钟周期数”介于 0.3 纳秒和 15 秒之间,并且在没有警告的情况下更改。 【参考方案1】:在 Windows 上获得高精度计时的最简单方法是 PerformanceCounter,请参阅 How to use QueryPerformanceCounter? 然后你只需要一些函数来执行你对计时感兴趣的操作。您必须小心缓存等,因此多次运行计算并查看时间分布
【讨论】:
以上是关于如何计算 ANSI C 代码性能?的主要内容,如果未能解决你的问题,请参考以下文章
显示 90 天前的日期形式 CURRENT (ANSI C)