valgrind callgrind 使用

        最近在linux环境下分析程序的性能,主要应用profile工具集。网上网罗了一些资料,按部就班的进行了一些实验,也得出了一些结果。

        其中,用到了valgrind中的memcheck、callgrind。实验了linux自带的gprof 与oprof。最终通过使用callgrind与gprof2dot结合使用,得出程序的调用次数与函数占比等关系图。

       以下分享下具体的步骤:

      1)首先是环境及工具准备。安装valgrind,下载gprof2dot.py 脚本 ,下载安装graphviz

       2)启动运行callgrind。 valgrind --tool=callgrind ./test

       3)运行完成后会当前目录下生成callgrind.out.***的文件

       4)运行gprof2dot.py -f callgrind callgrind.out.****|dot -Tpng -o report.png 在当前目录下生成report.png

report.png 就是我们希望得到的结果

                  下面写了个测试例子:  

int b(void) {
  int i=0,g=0;
  while(i++<400000)
  {
//    c();
    g+=i;
  }
  return g;
}


int main(int argc, char** argv)
{
   int iterations;
   if(argc != 2)
   {
      printf("Usage %s <No of Iterations>\n", argv[0]);
      return 0;
   }
   else
      iterations = atoi(argv[1]);
   printf("No of iterations = %d\n", iterations);
   while(iterations--)
   {
      a();
      b();
      
   }
}

        

         每个方框内部显示函数名称,函数整体包括内部子函数占用时间%比,函数自身,不包括内部子函数占用时间%比,函数执行次数。边表示父函数调用该子函数占用的时间%比,调用次数。从图中可以看出函数占用时间开销,调用次数等开发者。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值