有谁知道任何汇编循环级分析器?
我一直在使用gprof,但gprof隐藏了循环,它是函数级的分析,但为了优化我的代码,我想要达到循环级别。我希望它是自动化的,只给我像gprof一样的输出。有人建议我去dtrace,但我不知道该怎么开始。有没有人可以给我指路?例如
main:
pushl %ebp
movl %esp, %ebp
subl $16, %esp
movl $5000000, -4(%ebp)
movl $0, -12(%ebp)
movl $0, -8(%ebp)
jmp .L2
.L3:
movl -8(%ebp), %eax
addl %eax, -12(%ebp)
addl $1, -8(%ebp)
.L2:
movl -8(%ebp), %eax
cmpl -4(%ebp), %eax
jl .L3
movl $0, %eax
leave ret 例如,在gprof中,它会说main执行了1次,foo执行了100次。然而,我想知道如果L2或L3执行了100万次,那么我的注意力将集中在优化上。如果我的问题含糊其辞,请让我解释更多谢谢
发布于 2011-01-04 18:20:03
我建议使用Callgrind ( Valgrind工具之一,通常随它一起安装)。这可以在更细粒度的级别上收集统计数据,并且kcachegrind工具非常适合可视化结果。
发布于 2011-01-04 18:26:02
这取决于您使用的是什么操作系统,但对于这种分析,您通常希望使用采样分析器,而不是插装分析器,例如
Zoom
的
发布于 2011-01-04 21:03:49
如果您使用的是Linux,那么Zoom是一个很好的选择。
如果你使用的是Windows,LTProf或许可以做到这一点。
在任何平台上,都可以依赖低技术的方法random-pausing。
不要看指令被执行了多少次。在很大一部分时间里,查找程序计数器的位置。(它们不是一回事。)这将告诉您将优化工作集中在哪里。
https://stackoverflow.com/questions/4592335
复制相似问题