我需要找到特定算法正在执行的操作数: 分配,增量,整数比较器,浮点数比较器,整数乘法等。
我手动执行此操作,即使可行,也需要做很多工作。那么,你知道任何自动或半自动的工具吗?
我之所以这样问,是因为有些特殊情况我无法(或者很难)手动发现操作次数。例如,该算法有一个qsort
,并且查看该函数的混乱代码看起来像很多工作。
编辑:回应一些关于我为什么要这样的评论。未来的目标是实现目前在硬件语言上的软件的这种算法。因此,由于atan
延迟与乘法或和延迟不同,因此测量哪个算法具有正确数量的操作以转换为硬件语言非常重要。
答案 0 :(得分:1)
根据“操作”的含义,一种方法是编译程序然后use gdb to find the number of assembly instructions being run。
答案 1 :(得分:1)
您可以使用分析器获取每条指令运行频率和/或每条指令运行的时钟周期的统计摘要。
为了查看函数运行的实际指令序列,您想要的是一个跟踪。这是按顺序实际运行的指令序列,包括分支指令。最简单的方法是在gdb中设置断点,然后通过您感兴趣的函数+
设置断点。
对于更长的痕迹,这是不可行的。有这样的自动工具:
"a" + b
:http://lwn.net/Articles/625957/