使用Valgrind的callgrind做c/c++代码的code profiling/性能调优

本文介绍了Valgrind的Callgrind工具如何用于代码性能调优,重点在于CPU优化。Callgrind能统计函数调用次数和CPU指令执行次数,帮助开发者定位资源消耗。安装Valgrind和kCacheGrind后,通过默认参数运行程序并生成callgrind.log报告。Ir计数代表CPU指令执行次数,inclusive和exclusive统计方式分别计算函数及其内部函数的执行次数。注意,Valgrind的结果可能受编译选项影响,且仅反映运行时性能。

提起Valgrind,很多人认为是做内存泄漏的工具,其实memcheck只是Valgrind下的一个功能而已。

接下来我们一起看一下使用Valgrind的Callgrind工具实现Code Profiling/代码性能调优。(主要是针对CPU优化的)

Code Profiling

Code Profiling工具是指一个分析使用资源并生成报告的工具,这里的资源指内存,CPU,网络带宽等。 在做调优的第一步是使用工具将程序运行的真实定量数据收集起来,这种数据,就成为profiling data。通过profiling data,我们可以直观地看到资源消耗,并且找出问题所在,同时也可以科学地评估我们为代码性能调优后的结果。

传统的linux下的profiling工具有gprof,当然这个不在本文的讨论范围。这里我们主要介绍Valgrind。 Valgrind的profiling工具有两个——cachegrindcallgrind。cachegrind主要是统计CPUL1/L2cache的命中数;而callgrind统计函数调用次数以及CPU指令执行次数。

callgrind包含了一个cache类似特性,所以我们可以直接使用callgrind来做profiling。

安装

本人是使用centos做的测试,如果你是linux-like环境,只是安装的方式略有不同,基本都可以在默认的安装源下安装,如果存在找不到的情况,可以下载源码安装。

安装如下:

Step 1
安装Valgrind
yum install valgrind

Step 2
安装kcacheGrind
yum install kcachegrind

kCacheGrind是针对CacheGrind报告分析的可视化工具,需要单独安装。<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值