首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动装配循环级剖析

自动装配循环级剖析
EN

Stack Overflow用户
提问于 2011-01-04 17:54:54
回答 4查看 957关注 0票数 2

有谁知道任何汇编循环级分析器?

我一直在使用gprof,但gprof隐藏了循环,它是函数级的分析,但为了优化我的代码,我想要达到循环级别。我希望它是自动化的,只给我像gprof一样的输出。有人建议我去dtrace,但我不知道该怎么开始。有没有人可以给我指路?例如

代码语言:javascript
复制
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万次,那么我的注意力将集中在优化上。如果我的问题含糊其辞,请让我解释更多谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-04 18:20:03

我建议使用Callgrind ( Valgrind工具之一,通常随它一起安装)。这可以在更细粒度的级别上收集统计数据,并且kcachegrind工具非常适合可视化结果。

票数 1
EN

Stack Overflow用户

发布于 2011-01-04 18:26:02

这取决于您使用的是什么操作系统,但对于这种分析,您通常希望使用采样分析器,而不是插装分析器,例如

Zoom

  • Mac OS X:Instruments

  • Windows:VTune

  • Linux
票数 4
EN

Stack Overflow用户

发布于 2011-01-04 21:03:49

如果您使用的是Linux,那么Zoom是一个很好的选择。

如果你使用的是Windows,LTProf或许可以做到这一点。

在任何平台上,都可以依赖低技术的方法random-pausing

不要看指令被执行了多少次。在很大一部分时间里,查找程序计数器的位置。(它们不是一回事。)这将告诉您将优化工作集中在哪里。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4592335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档