Linux性能优化工具之gprof简记

  1. gprof工作方式

    在使用gcc编译时指定-pg选项,编译器在用户代码中插入性能测试代码。

  2. gprof简单应用实例

    main.c

#include <stdio.h>
#include "lib.h"

int main(void)
{
	func1(20);

	func2(100);

	return 0;
}

lib.h

#ifndef LIB_H
#define LIB_H

void func1(int i);

void func2(int i);

#endif /* LIB_H */

lib.c

#include <stdio.h>
#include "lib.h"

void func1(int i)
{
	while (i--)
		printf("func1(): %d\n", i);
}

void func2(int i)
{
	while (i--)
		printf("func2(): %d\n", i);
}

Makefile

CFLAGS += -pg

objs = $(patsubst %.c,%.o,$(wildcard *.c))

prog: $(objs)
	gcc -pg -o [email protected] $^

clean:
	-rm -f prog $(objs)

在命令行运行make编译代码,产生prog文件。输入./prog运行文件,产生一个输出文件gmon.out。之后

用工具gprof分析该输出文件分析程序的运行情况,并依据这些分析得出的数据优化程序。

运行 gprof prog gmon.out > gprofrslt.txt 分析输出文件得到如下结果(节选部分内容)。可根据传递给

gprof不同的参数得出不同方面性能考量的输出。

Flat profile:

Each sample counts as 0.01 seconds.
 no time accumulated

  %   cumulative   self              self     total           
 time   seconds   seconds    calls  Ts/call  Ts/call  name    
  0.00      0.00     0.00        1     0.00     0.00  func1
  0.00      0.00     0.00        1     0.00     0.00  func2

具体输出的含义可参考gprof帮助文档。

3. gprof文档

http://sourceware.org/binutils/docs/gprof/

时间: 2024-07-28 21:15:15

Linux性能优化工具之gprof简记的相关文章

Linux/Android 性能优化工具 perf

/***************************************************************************** * Linux/Android 性能优化工具 perf * 说明: * 之前一直在找Android上的性能优化工具,但是一直不知道应该找哪方面的关键字, * 今天在看Android源代码目录的时候看到linux-tools-perf,查了点相关资料,最后 * 发现这好像就是我一直在找的查看系统性能的工具,目前没有验证任何东西,先记录 * 下

转:Linux性能评测工具之一:gprof篇

1 简介 改进应用程序的性能是一项非常耗时耗力的工作,但是究竟程序中是哪些函数消耗掉了大部分执行时间,这通常都不是非常明显的.GNU 编译器工具包所提供了一种剖析工具 GNU profiler(gprof).gprof 可以为 Linux平台上的程序精确分析性能瓶颈.gprof精确地给出函数被调用的时间和次数,给出函数调用关系. gprof 用户手册网站 http://sourceware.org/binutils/docs-2.17/gprof/index.html 2 功能 Gprof 是G

Linux性能优化和监控系列(一)——top工具

解释服务器发生了什么——top工具 在检查服务器的详细工作性能状态前,系统管理员需要对当前服务器状态有总体的了解. top是检查服务器总体状态的强有力工具, 通过top可以获取CPU, Memory, Process运行信息, 如下是运行top命令后的数据显示: top - 20:08:09 up 10 min,  1 user,  load average: 0.00, 0.02, 0.01 Tasks: 104 total,  1 running, 103 sleeping,  0 stop

Linux性能调优之gprof和oprofile

为了更好的优化程序性能,我们必须找到性能瓶颈点,“好钢用在刀刃上”才能取 得好的效果,否则可能白做工作. 为了找到关键路径,我们可以使用profilng技术,在linux平台上,我们可以使用gprof和oprofile工 具. gprof是GNU工具之一,它在编译的时候在每个函数的出入口加入了profiling的代码,运行时统计程序在用户态的 执行信息,可以得到每个函数的调用次数,执行时间,调用关系等信息,简单易懂.适合于查找用户级程序的性能瓶颈,对于很多时间都在内核态执行的程 序,gprof不

超全整理!Linux性能分析工具汇总合集

出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章.本文也可以作为检验基础知识的指标,另外文章涵盖了一个系统的方方面面.如果没有完善的计算机系统知识,网络知识和操作系统知识,文档中的工具,是不可能完全掌握的,另外对系统性能分析和优化是一个长期的系列. 本文档主要是结合Linux 大牛,Netflix 高级性能架构师 Brendan Gregg 更新 Linux 性能调优工具的博文,搜集Linux系统性能优化相关文章整理后的一篇综合性文章,主要是结合博文对涉及到的原理和性

linux 性能诊断工具命令集

#查看当前系统load uptime #查看系统状态和每个进程的系统资源使用状况 top #可视化显示CPU的使用状况 htop #查看每个CPU的负载信息 mpstat -P ALL 1 #每隔1秒查看磁盘IO的统计信息 iostat -xkdz 1 #每隔一秒查看虚拟内存的使用信息 vmstat 1 #查看内存使用统计信息 free #查看网络使用信息 nicstat -z 1 #类似vmstat的显示优化的工具 dstat 1 #查看系统活动状态,比如系统分页统计,块设备IO统计等 sar

Linux 性能优化之 IO 子系统 系列 图

http://blog.sina.com.cn/s/articlelist_1029388674_11_1.html Linux 性能优化之 IO 子系统(一) 本文介绍了对 Linux IO 子系统性能进行优化时需要考虑的因素,以及一些 IO 性能检测工具. 本文的大部分内容来自 IBM Redbook - Linux Performance and Tuning Guidelines FileSystem VFS(Virtual FileSystem) 虚拟文件系统 文件系统是内核的功能,是

Linux 性能分析工具汇总合集

出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章.本文也可以作为检验基础知识的指标,另外文章涵盖了一个系统的方方面面.如果没有完善的计算机系统知识,网络知识和操作系统知识,文档中的工具,是不可能完全掌握的,另外对系统性能分析和优化是一个长期的系列. 本文档主要是结合Linux 大牛,Netflix 高级性能架构师 Brendan Gregg 更新 Linux 性能调优工具的博文,搜集Linux系统性能优化相关文章整理后的一篇综合性文章,主要是结合博文对涉及到的原理和性

如何学习Linux性能优化?

如何学习Linux性能优化? 你是否也曾跟我一样,看了很多书.学了很多 Linux 性能工具,但在面对 Linux 性能问题时,还是束手无策?实际上,性能分析和优化始终是大多数软件工程师的一个痛点.但是,面对难题,我们真的就无解了吗? 固然,性能问题的复杂性增加了学习难度,但这并不能成为我们进阶路上的"拦路虎".在我看来,大多数人对性能问题"投降",原因可能只有两个. 一个是你没找到有效的方法学原理,一听到"系统"."底层"这