文档章节

使用gperftool + libuwind + graphviz来分析程序性能

harris2016
 harris2016
发布于 2016/06/22 10:04
字数 545
阅读 494
收藏 1

   为了了解程序的执行时间以及各个函数之间的调用关系,可以通过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)如果是在多线程中,可以采用下面的形式来控制:

#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格式的结果的部分截图,从图片中可以看到每个函数的调用关系以及每个函数消耗的时间比例。

© 著作权归作者所有

harris2016
粉丝 10
博文 54
码字总数 30661
作品 0
杭州
程序员
私信 提问
使用Google的性能分析工具分析Go程序的记录

这是一个在ubuntu 12.04,32位的AMD平台下的调试经历,仅供参考。为了使用google的Go语言性能分析工具,你需要先下载并安装google的性能分析工具:gperftools。 下载地址: http://code.goog...

qinhui99
2012/06/26
1K
0
PHP性能分析工具-xhprof扩展安装

简述:XHProf是一个分层PHP性能分析工具。它报告函数级别的请求次数和各种指标,包括阻塞时间,CPU时间和内存使用情况。一个函数的开 销,可细分成调用者和被调用者的开销,XHProf数据收集阶段...

wbf961127
2017/11/12
0
0
PHP性能分析工具XHProf安装使用教程

HProf是facebook开源出来的一个php轻量级的性能分析工具,跟Xdebug类似,但性能开销更低,还可以用在生产环境中,也可以由程序开关来控制是否进行profile。基于浏览 器的性能分析用户界面能更...

开元中国2015
2015/05/18
108
0
[原创] 在CentOS环境里ThinkPHP框架下如何配置XHProf

XHProf是facebook开源出来的一个php轻量级的性能分析工具,跟Xdebug类似,但性能开销更低,还可以用在生产环境中,也可以由程序开 关来控制是否进行profile。 以下是在CentOS下的记录和总结:...

SunnyGo
2012/05/16
2.8K
0
使用brew报错:Bad credentials/GitHub API Error: API rate limit exceeded for

背景描述 XHProf是一个轻量级的PHP性能分析工具. 使用XHProf的时候,在点击[View Full Callgraph]查看结果分析图时,会报错, 原因是缺少graphviz绘图软件。 在使用 brew安装graphviz软件出现...

王永濤
2016/09/12
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

作为一个(IT)程序员!聊天没有话题?试试这十二种技巧

首先呢?我是一名程序员,经常性和同事没话题。 因为每天都会有自己的任务要做,程序员对于其他行业来说;是相对来说比较忙的。你会经常看到程序员在发呆、调试密密麻麻代码、红色报错发呆;...

小英子wep
58分钟前
11
0
【SpringBoot】产生背景及简介

一、SpringBoot介绍 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程,该框架使用了特定的方式来进行配置,从而使开发人员不再需要...

zw965
今天
4
0
简述并发编程分为三个核心问题:分工、同步、互斥。

总的来说,并发编程可以总结为三个核心问题:分工、同步、互斥。 所谓分工指的是如何高效地拆解任务并分配给线程,而同步指的是线程之间如何协作,互斥则是保证同一时刻只允许一个线程访问共...

dust8080
今天
6
0
OSChina 周四乱弹 —— 当你简历注水但还是找到了工作

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @花间小酌 :#今日歌曲推荐# 分享成龙的单曲《男儿当自强》。 《男儿当自强》- 成龙 手机党少年们想听歌,请使劲儿戳(这里) @hxg2016 :刚在...

小小编辑
今天
3.2K
22
靠写代码赚钱的一些门路

作者 @mezod 译者 @josephchang10 如今,通过自己的代码去赚钱变得越来越简单,不过对很多人来说依然还是很难,因为他们不知道有哪些门路。 今天给大家分享一个精彩的 GitHub 库,这个库整理...

高级农民工
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部