性能测试工具 gperftools环境搭建(亲测好用)

最近项目需要优化一些模块的性能,找了一些工具,发现 gperftools可以提供图形化的成果物,于是尝试使用 gperftools对程序的性能进行测试,但是参考网上教程在搭建环境的过程中总会有这样那样的问题,在这里记录一下我自己搭建该环境的过程,本文基于ubuntu 16.04搭建gperftools相关环境,亲测好用。

gperftools简介:

gperftools google推出的一个性能分析工具,相关介绍可见:
https://github.com/gperftools/gperftools/wiki

gperftools环境搭建:

1.安装基本编译环境,如果有些机器已经安装那么请忽略掉

(1)apt-get install autoconf automake libtool

2.安装libunwind库-这里安装的是1.5.0的版本

(1)首先下载该程序包,下载地址:http://download.savannah.gnu.org/releases/libunwind/

(2)下载之后解压文件:tar -xzvf libunwind-XXX.tar.gz

(3)进入文件目录之后执行:make && make install

3.安装图形化工具:graphviz

(1)apt-get install graphviz

4.安装gperftools工具

(1)去GitHub下载最新源码:https://github.com/gperftools/gperftools

(2)进入文件目录执行make && make install

至此gperftools环境已经搭建好了,下面看看该工具如何使用吧:

gperftools使用介绍:

在这里我只介绍一种方式,就是在程序中测试制定位置的源码性能,其余还有几种方式,大家可以参考wiki上面的相关文档。

1.在想要测试性能的地方加入  ProfilerStart("xxxx.prof");   ProfilerStop();代码

2.编译源码,加入链接库:-lprofiler -lunwind

3.执行程序

4.待程序结束之后敲入命令:pprof --pdf ./XXX  XXX.prof > XXX.pdf  生成pdf文档。

gperftools案例介绍:

对如下代码进行性能测试:demo.c



#include <gperftools/profiler.h>
#include <stdio.h>
void func1()
{
    int i = 0;
    int j = 0;
    for(i = 0;i < 1000;i++)
    {
        for(j = 0;j < 100000;j++)
        {
            ;
        }
    }
}
void func2()
{
    int i = 0;
    int j = 0;
    for(i = 0;i < 200;i++)
    {
        for(j = 0;j < 100000;j++)
        {
            ;
        }
    }
}
void func3()
{
    int i = 0;
    int j = 0;
    for(i = 0;i < 300;i++)
    {
        for(j = 0;j < 100000;j++)
        {
            ;
        }
    }
}
void func4()
{
    func1();
    func2();
    func3();
}
int main()
{
    ProfilerStart("my.prof"); // 指定所生成的profile文件名
    func4();
    ProfilerStop(); // 结束profiling
}



编译代码:gcc -o demo demo.c -lprofiler -lunwind

运行代码:./demo

生成pdf文件:pprof --pdf ./demo my.prof > output.pdf

如下 的pdf:

小提示:如果代码执行的时间太短,生成pdf时会提示没有节点生成,并不是你的环境没有搭建好,而是代码运行太快了,该工具来不及统计!

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值