关于c++:性能工具之代码级剖析工具

2次阅读

共计 858 个字符,预计需要花费 3 分钟才能阅读完成。

上次有人提到说下分析工具。所以再来聊聊代码级分析工具。
不管怎么吹,代码级分析工具对性能自身的损耗都是存在的。
并且损耗还不小。即便是在偏底层做,也照样有很大的损耗。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