提起Valgrind,很多人认为是做内存泄漏的工具,其实memcheck只是Valgrind下的一个功能而已。
接下来我们一起看一下使用Valgrind的Callgrind工具实现Code Profiling/代码性能调优。(主要是针对CPU优化的)
Code Profiling
Code Profiling工具是指一个分析使用资源并生成报告的工具,这里的资源指内存,CPU,网络带宽等。 在做调优的第一步是使用工具将程序运行的真实定量数据收集起来,这种数据,就成为profiling data。通过profiling data,我们可以直观地看到资源消耗,并且找出问题所在,同时也可以科学地评估我们为代码性能调优后的结果。
传统的linux下的profiling工具有gprof,当然这个不在本文的讨论范围。这里我们主要介绍Valgrind。 Valgrind的profiling工具有两个——cachegrind和callgrind。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报告分析的可视化工具,需要单独安装。<

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

2061

被折叠的 条评论
为什么被折叠?



