使用gperftool + libuwind + graphviz来分析程序性能
2016-06-22 00:00
330 查看
为了了解程序的执行时间以及各个函数之间的调用关系,可以通过Google的gperftool来统计函数之间的关系以及时间信息。通过分析每个函数的时间信息,就可以看程序的关键消耗点在什么地方。
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)在目标文件中加入#include <google/profiler.h>,在程序开始处加入ProfilerStart("my.prof"),在程序结束处加入ProfilerStop().
2)在编译连接时,需要链接libprofiler库,64位操作系统同时链接libunwind库。
3)如果是在多线程中,可以采用下面的形式来控制:
设置好上面的代码后,重新编译完成。直接运行即可。运行完成后就会生成my.prof文件。我在中间件pgoneproxy中增加后直接运行,就可以直接生成my.prof文件。但是在postgersql的psql的源码中增加后运行结束确不能生成。后面再网络上上面找到执行方式:env CPUPROFILE=./my.prof ./psql -h 127.0.0.1 -p 5432 -U db_user pgbench。安装这种执行方式确能够生成文件my.prof文件。
3. 分析输出
pprof脚本用于分析profile文件并输出结果,包括文本和图形两种输出风格。
例如:/urs/local/pgsql/bin/psql是目标程序,my.prof是profile文件
生成文本风格结果:pprof --text /urs/local/pgsql/bin/psql my.prof > profile.txt
生成图形风格结果:pprof --pdf /urs/local/pgsql/bin/psql my.prof > profile.pdf
4. 结果展示
下图是pgoneproxy中生成的pdf格式的结果的部分截图,从图片中可以看到每个函数的调用关系以及每个函数消耗的时间比例。
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)在目标文件中加入#include <google/profiler.h>,在程序开始处加入ProfilerStart("my.prof"),在程序结束处加入ProfilerStop().
2)在编译连接时,需要链接libprofiler库,64位操作系统同时链接libunwind库。
3)如果是在多线程中,可以采用下面的形式来控制:
[code=language-cpp]#include <google/profiler.h> static int is_record = 0; if (is_record == 0) { ProfilerStart("my.prof"); } if (is_record == 0) { ProfilerStop(); is_record = 1; }
设置好上面的代码后,重新编译完成。直接运行即可。运行完成后就会生成my.prof文件。我在中间件pgoneproxy中增加后直接运行,就可以直接生成my.prof文件。但是在postgersql的psql的源码中增加后运行结束确不能生成。后面再网络上上面找到执行方式:env CPUPROFILE=./my.prof ./psql -h 127.0.0.1 -p 5432 -U db_user pgbench。安装这种执行方式确能够生成文件my.prof文件。
3. 分析输出
pprof脚本用于分析profile文件并输出结果,包括文本和图形两种输出风格。
例如:/urs/local/pgsql/bin/psql是目标程序,my.prof是profile文件
生成文本风格结果:pprof --text /urs/local/pgsql/bin/psql my.prof > profile.txt
生成图形风格结果:pprof --pdf /urs/local/pgsql/bin/psql my.prof > profile.pdf
4. 结果展示
下图是pgoneproxy中生成的pdf格式的结果的部分截图,从图片中可以看到每个函数的调用关系以及每个函数消耗的时间比例。
相关文章推荐
- postgresql ident验证机制的实现
- Http 协议 & HttpURLConnection
- RESTful 架构
- 枚举enum
- Logistic回归与R
- xcode 7发送NSURLSession请求报错
- Android Camera 使用一例,视频聊天app
- 构造,析构,重载, final
- Struts2中的OGNL
- 网络购物分析-java
- 魔术方法常量
- 取消弹出信息:Are you sure you want to continue connecting
- 显示ProgressDialog
- php绑定数据修改
- 关键字sizeof()小结
- stat函数讲解(转)
- ssh框架配置事务管理器
- Java-当泛型遇到重载
- ListView中convertView和ViewHolder的工作原理
- Hibernate3主键生成策略