gperftools
gperftools是Google提供的一套工具,其中的一个功能是CPU profiler,用于分析程序性能,找到程序的性能瓶颈。
1、安装
gperftools:http://code.google.com/p/gperftools/downloads/list
libunwind:http://download.savannah.gnu.org/releases/libunwind/
64位操作系统需要安装libunwind,官方推荐版本是libunwind-0.99-beta
安装过程:./configure [--disable-shared] && make && make install
Graphviz是一个由AT&T实验室启动的开源工具包,用于绘制DOT语言脚本描述的图形,gperftools依靠此工具生成图形分析结果。
安装命令:yum install graphviz
2、使用
方法有三种:
1、直接调用提供的api:这种方式比较适用于对于程序的某个局部来做分析的情况,直接在要做分析的局部调用相关的api即可。
方式:调用函数:ProfilerStart()
and ProfilerStop()
2、链接静态库:这种方式是最为常用的方式,后面会有详细的介绍。
方式:在代码link过程中添加参数 –lprofiler
For example:gcc […] -o helloworld –lprofiler
运行程序:env CPUPROFILE=./helloworld.prof ./helloworld
指定要profile的程序为helloworld,并且指定产生的分析结果文件的路径为./helloworld.prof
3、链接动态库:这种方式和静态库的方式差不多,但通常不推荐使用,除非使用者不想额外链一个静态库(因为链接静态库会增大binary的大小)的情况,可以考虑使用这种方式。
方式:运行时使用LD_PRELOAD,e.g. % env LD_PRELOAD="/usr/lib/libprofiler.so" <binary>
(不推荐这种方式)。
Ps
:env是linux下插入环境变量的shell命令
引用链接:http://www.cnblogs.com/caosiyang/archive/2013/01/25/2876244.html
引用链接:http://www.cnblogs.com/GODYCA/archive/2013/05/28/3104281.html
http://www.cnblogs.com/GODYCA/archive/2013/05/28/3104281.html
http://www.tuicool.com/articles/faaEv2