计算操作次数C.

时间:2015-08-28 16:51:59

标签: c performance

我需要找到特定算法正在执行的操作数: 分配,增量,整数比较器,浮点数比较器,整数乘法等。

我手动执行此操作,即使可行,也需要做很多工作。那么,你知道任何自动或半自动的工具吗?

我之所以这样问,是因为有些特殊情况我无法(或者很难)手动发现操作次数。例如,该算法有一个qsort,并且查看该函数的混乱代码看起来像很多工作。

编辑:回应一些关于我为什么要这样的评论。未来的目标是实现目前在硬件语言上的软件的这种算法。因此,由于atan延迟与乘法或和延迟不同,因此测量哪个算法具有正确数量的操作以转换为硬件语言非常重要。

2 个答案:

答案 0 :(得分:1)

根据“操作”的含义,一种方法是编译程序然后use gdb to find the number of assembly instructions being run

答案 1 :(得分:1)

您可以使用分析器获取每条指令运行频率和/或每条指令运行的时钟周期的统计摘要。

为了查看函数运行的实际指令序列,您想要的是一个跟踪。这是按顺序实际运行的指令序列,包括分支指令。最简单的方法是在gdb中设置断点,然后通过您感兴趣的函数+设置断点。

对于更长的痕迹,这是不可行的。有这样的自动工具: