性能分析报告

性能测试工具CPU profiler(gperftools)
编译安装gperftools

gperftools是一个工具包,CPU profiler是其中的工具之一,用于程序性能分析。要使用CPU profiler就要先编译安装gperftools,下面是简单的编译安装过程.

从github下载gperftools源码并解压wgethttps://github.com/gperftools/gperftools/archive/gperftools-2.7.tar.gztarxvf gperftools-2.7.tar.gz# 解压文件夹改名mvgperftools-gperftools-2.7 gperftools-2.7cdgperftools-2.7./autogen.sh./configuremake-j8# 安装到系统文件夹sudomakeinstall

注意:在64位操作系统下需要libunwind支持,如果没有安装libunwind,还要先编译安装libunwind。

使用cpu profiler

根据CPU profiler的官方说明(https://gperftools.github.io/gperftools/cpuprofile.html),对一个程序进行测试是很简单的。

只要加上-lprofiler对程序重新编译一次,再执行程序就可以了,如下是官网给出简单步骤:

加上-lprofiler编译自己的程序gcc[…]-o myprogram -lprofiler# 设置环境变量CPUPROFILER指定生成的性能报告文件,并执行自己的程序CPUPROFILE=/tmp/profile ./myprogram

这个简单办法,不需要修改自己的程序,但我一直没有尝试成功,不能生成性能报告文件(如果有朋友知道为什么,请不吝赐教),最终还是通过修改自己的程序,在程序开始和结束位置分别加入ProfilerStart,ProfilerStop函数才解决。示例如下:

#include<gperftools/profiler.h>…intmain(intargc,constchar*argv[]){ProfilerStart(“test_capture.prof”);…ProfilerStop();}

因为在代码中加入了ProfilerStart函数指定了生成性能报告的文件名,所以在执行程序时就不一定需要CPUPROFILE=/tmp/profile再指定性能报告文件名。

程序运行结束会在当前文件夹生成名为test_capture.prof的性能报告。

性能报告

扫描二维码关注公众号,回复: 8783693 查看本文章

有了性能报告 ,就可以用gperftools提供的性能分析工具pprof生成直观可读的文件形式。

browser

生成性能报告(层次调用节点有向图)输出到web浏览器显示# 第一个参数为你的可执行程序或动态库文件名,第二个参数为上一步生成的性能报告文件pprof ./test_capture test_capture.prof --web

下面的图形输出报告中,大字体显示的节
性能测试工具CPU profiler(gperftools)
编译安装gperftools

gperftools是一个工具包,CPU profiler是其中的工具之一,用于程序性能分析。要使用CPU profiler就要先编译安装gperftools,下面是简单的编译安装过程.

从github下载gperftools源码并解压wgethttps://github.com/gperftools/gperftools/archive/gperftools-2.7.tar.gztarxvf gperftools-2.7.tar.gz# 解压文件夹改名mvgperftools-gperftools-2.7 gperftools-2.7cdgperftools-2.7./autogen.sh./configuremake-j8# 安装到系统文件夹sudomakeinstall

注意:在64位操作系统下需要libunwind支持,如果没有安装libunwind,还要先编译安装libunwind。

使用cpu profiler

根据CPU profiler的官方说明(https://gperftools.github.io/gperftools/cpuprofile.html),对一个程序进行测试是很简单的。

只要加上-lprofiler对程序重新编译一次,再执行程序就可以了,如下是官网给出简单步骤:

加上-lprofiler编译自己的程序gcc[…]-o myprogram -lprofiler# 设置环境变量CPUPROFILER指定生成的性能报告文件,并执行自己的程序CPUPROFILE=/tmp/profile ./myprogram

这个简单办法,不需要修改自己的程序,但我一直没有尝试成功,不能生成性能报告文件(如果有朋友知道为什么,请不吝赐教),最终还是通过修改自己的程序,在程序开始和结束位置分别加入ProfilerStart,ProfilerStop函数才解决。示例如下:

#include<gperftools/profiler.h>…intmain(intargc,constchar*argv[]){ProfilerStart(“test_capture.prof”);…ProfilerStop();}

因为在代码中加入了ProfilerStart函数指定了生成性能报告的文件名,所以在执行程序时就不一定需要CPUPROFILE=/tmp/profile再指定性能报告文件名。

程序运行结束会在当前文件夹生成名为test_capture.prof的性能报告。

性能报告

有了性能报告 ,就可以用gperftools提供的性能分析工具pprof生成直观可读的文件形式。

browser

生成性能报告(层次调用节点有向图)输出到web浏览器显示# 第一个参数为你的可执行程序或动态库文件名,第二个参数为上一步生成的性能报告文件pprof ./test_capture test_capture.prof --web

下面的图形输出报告中,大字体显示的节点就是CPU使用率的’热点’,一目了然

节点信息说明

图形风格的性能报告由节点和有向边组成, 每个节点代表一个函数,节点数据格式:

字段名描述

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

Method Name函数名

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

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

有向边:调用者指向被调用者,有向边上的时间表示被调用者所消耗的CPU时间

性能分析通过抽样方法完成,默认是1秒100个样本,一个样本是10毫秒,即时间单位是10毫秒;可以通过环境变量CPUPROFILE_FREQUENCY设置采样频率。

更多详细说明参见 CPU profiler Node Information一节

pdf

生成pdf格式的性能报告(层次调用节点有向图)pprof ./test_capture test_capture.prof --pdf>prof.pdf

text

生成文本格式的性能报告输出到控制台./test_capture test_capture.prof --text

输出内容如下,在CPU使用率降序输出所有的函数名:

日记本
相关推荐
安卓那些你不得不收藏的开源库
阅读 967
免费报名>>中欧MBA公开课
广告
复用性极强使用极其方便快捷的Dialog封装类
阅读 588
后台系统设计——角色权限
阅读 3514
Android图片加载框架最全解析(八),带你全面了解Glide 4的用法
阅读 712

图形风格的性能报告由节点和有向边组成, 每个节点代表一个函数,节点数据格式:

字段名描述

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

Method Name函数名

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

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

有向边:调用者指向被调用者,有向边上的时间表示被调用者所消耗的CPU时间

性能分析通过抽样方法完成,默认是1秒100个样本,一个样本是10毫秒,即时间单位是10毫秒;可以通过环境变量CPUPROFILE_FREQUENCY设置采样频率。

更多详细说明参见 CPU profiler Node Information一节

pdf

生成pdf格式的性能报告(层次调用节点有向图)pprof ./test_capture test_capture.prof --pdf>prof.pdf

text

生成文本格式的性能报告输出到控制台./test_capture test_capture.prof --text

输出内容如下,在CPU使用率降序输出所有的函数名:

日记本
相关推荐
安卓那些你不得不收藏的开源库
阅读 967
免费报名>>中欧MBA公开课
广告
复用性极强使用极其方便快捷的Dialog封装类
阅读 588
后台系统设计——角色权限
阅读 3514
Android图片加载框架最全解析(八),带你全面了解Glide 4的用法
阅读 712

发布了81 篇原创文章 · 获赞 0 · 访问量 1305

猜你喜欢

转载自blog.csdn.net/qq_42894864/article/details/104044850