性能工具之代码级剖析工具

 

 

上次有人提到说下剖析工具。所以再来聊聊代码级剖析工具。

不管怎么吹,代码级剖析工具对性能本身的损耗都是存在的。

并且损耗还不小。即使是在偏底层做,也照样有很大的损耗。20-30%损耗都是正常的。

 

要找好代码级工具的切入点,一开始就用肯定是不理智。只要分析到了某一个具体的进程或线程,或者已经有了可疑代码的具体方法,再上代码级剖析工具就更有目的性了。

 

JAVA方向:对JAVA来说,代码级的剖析工具有好多。自带的就有不少,像现在SUN JDK中的jvirtualVM就可以实时看CPU和内存在一个方法和对象上的消耗。还有jstack/jmap等工具可辅助。如果不想实时看,做下dump也可以看内存的占用。但是要想看方法调用时间就比较费劲一点。不过现在有不少的商业工具,比如说jprofiler,这工具直到现在还是我所见到的在java剖析中功能最全面的工具(它是商业的)。

图片

不仅有树结构,还有调用图。

图片

建议大家尽量找到可替代的适合的开源工具。

 

C/C++方向:在这个方向上,其实不止有专门的代码级剖析工具,像valgrind, google perftools。也有系统级的调试工具可以用。各种的trace工具,像perf/systemtap/oprofile之类的也都可用,并且内核级工具损耗要小一些。在solaris上有Dtrace,那本《性能之颠》的书里几乎全是Dtrace工具的例子。 并且这些工具还能生成火焰图、热力图之类的。

图片

 

在其他语言上也有相应的剖析工具可用。像PHP有 Xdebug、xhprof;python有cprofile、memoryprofiler、lineprofiler;.net有CLR profiler;Go语言有pprof(这个是移植过来的,google perf中的工具更多)。

不管是什么语言,几乎类似的工具都存在的。有了这些工具,再加上系统级的调试工具,找到代码级性能问题就是分分钟的事。

 

当然,还是要强调人的思考能力在社会进步中的重要性,千万不要拿着榔头打枣,够不够得着不说,举一会也够累的。适合的工具最重要。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值