linux c++ pprof的使用

这是谷歌的一个linux下性能测试的小工具。贼好用。可以简单快速的发现程序的性能瓶颈,长话短说。

1. 安装

第一步拿到压缩包
wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.5/gperftools-2.5.tar.gz
第二步./configure 
第三部 make -j 4 && make install
搞定!

    如果./configure 中遇到unwind 的库没有找到,请直接忽略。

2.使用

            2.1 在c++程序编译的时候加上 -lprofiler

            2.2 运行的时候使用CPUPROFILE=./pprofRes ./main(pprofRes是pprof产生的结果,main是你的可执行程序)

3. 结果分析

           目前我所知道的两种分析方式,一种是文本,另外一种是pdf格式。我主要用pdf格式。

            3.1 pprof --text ./main pprofRes 生成文本,一般要用>放到test.txt内

            3.2 pprof --pdf ./main pprofRes 生成pdf格式,同理一般用>放到test.pdf内。
 

4. 观察

系统瓶颈。一般来说,百分比越大就说明在那里耗时多。

其中pdf每项的含义如下:

描述

Class Name

类名,非类成员函数此项为空

Method Name

函数名

local (percentage)

当前函数直接执行的指令所消耗的CPU时间(包括内联函数)(百分比)

of cumulative (percentage)

当前函数的local时间及其调用的函数的local时间总和(百分比),如果与local相同,则不显示

 

5. python中使用

其中如果想在Python中使用PProf,则可以使用yep这个Python的插件,使用办法如下:

python -m yep -v -- main.py

运行完上述代码后,会生成一个main.py.prof的文件,然后使用:

pprof --text `which python` main.py.prof

即可

 

6. tips

           在2.2时,可能会出现找不到libprofiler.so.0的情况,使用whereis libprofiler.so.0 查一下。再不行就find /查一下,自己拿肉眼看。

           在2.2时,可能会找不到CPUPROFILE,我记得这个东西是需要 export的。需要时可以自行百度。

           在3.2时,可能会出现  not find  dot & ps2pdf 这是你没装转换成pdf的两个关键工具。使用yum install ghostscript就好了。会安装好上述两个工具。

            所有找不到库的都用export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:目标目录解决。

            如果需要更加详细的某一代码块的耗时情况,可以使用ProfilerStart(), ProfilerStop();这两个函数,分别加在代码的开始端和结束端。需要头文件,也自行百度吧。

           

 

            

 

 

你可能感兴趣的:(c++)