1. 前言

限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。

2. gprof工作基本原理

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

3. 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_Hvoid 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 += -pgobjs = $(patsubst %.c,%.o,$(wildcard *.c))prog: $(objs)gcc -pg -o $@ $^clean:-rm -f prog $(objs)

在命令行运行make编译代码,产生prog文件。输入./prog运行文件,产生一个输出文件gmon.out。之后用工具gprof分析该输出文件分析程序的运行情况,并依据这些分析得出的数据优化程序。运行 gprof prog gmon.out > gprof-result.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  func10.00      0.00     0.00        1     0.00     0.00  func2

4 gprof缺点

对多线程、内核态支持不好。只统计占用的CPU时间,而陷入睡眠态的时间不做统计,可结合time命令等其他工具来优化性能。

5. gprof文档

gprof官方文档

6. 后记

本篇移自个人51CTO博客原地址

Linux性能优化工具:gprof简记相关推荐

  1. Linux性能优化:性能优化工具

    1.Linux网络协议栈 1.1 首先是网络接口层和网络层,它们主要负责网络包的封装.寻址.路由,以及发送和接收.每秒可处理的网络包数 PPS,就是它们最重要的性能指标(特别是在小包的情况下).你可以 ...

  2. linux性能优化实战学习笔记-(1)CPU性能分析工具与套路

    版权归Linux性能优化实战 作者倪鹏飞,本文主要是为学习.整理相关知识点,请勿用作商用,侵删. linux性能分析工具 下图来自:Brendan D. Gregg http://www.brenda ...

  3. 开发人员如何解决Linux性能优化之痛?

    这些问题或者场景,你是否曾经遇到过? •  流量高峰期,服务器CPU使用率过高报警,你登录Linux上去top完之后,却不知道怎么进一步定位,到底是系统CPU资源太少,还是程序并发部分写的有问题? • ...

  4. 如何学习Linux性能优化?

    如何学习Linux性能优化? 你是否也曾跟我一样,看了很多书.学了很多 Linux 性能工具,但在面对 Linux 性能问题时,还是束手无策?实际上,性能分析和优化始终是大多数软件工程师的一个痛点.但 ...

  5. linux性能优化--cpu篇

    linux性能优化--cpu篇 前言 负载 CPU使用率 proc perf 一些链接 `perf list` 比较有用的event `perf stat` `perf record` Profili ...

  6. Linux性能优化方向及相关工具

    1. 考察性能的指标 从应用负载的角度 吞吐 延时 从系统资源的角度 CPU使用率 内存饱和度 2. 定位性能问题的步骤 选择指标评估性能 设置性能优化的目标 进行性能基准测试 分析和定位性能瓶颈 对 ...

  7. 推荐学习-Linux性能优化实战

    学习交流加(可免费帮忙下载CSDN资源): 个人微信: liu1126137994 学习交流资源分享qq群1(已满): 962535112 学习交流资源分享qq群2: 780902027 推荐一个学习 ...

  8. Linux 性能优化全景指南

    大家好 我是坤哥 之前一些朋友觉得奇怪,说你主要做 Java 的,公号怎么时不时地也推送一些 Linux 文章,其实不管你是哪个 xx 语言的工程师,要想进阶,Linux 性能优化是必备知识,举个例子 ...

  9. Linux性能优化实战学习笔记:第四十六讲=====实战分析

    Linux性能优化实战学习笔记:第四十六讲 一.上节回顾 不知不觉,我们已经学完了整个专栏的四大基础模块,即 CPU.内存.文件系统和磁盘 I/O.以及网络的性能分析和优化.相信你已经掌握了这些基础模 ...

最新文章

  1. java开发面试复试_java开发实习生面试经历
  2. ML:MLOps系列讲解之《基于ML的软件的三个层次之02 Model: Machine Learning Pipelines 2.1~2.4》解读
  3. String类型的字符长度(码点/代码单元的区别)
  4. php 从字符中随机挑一个数,php 对中文字符串的处理- 随机取出指定个数的汉字...
  5. 基础知识巩固四(问题部分)
  6. java中矩阵怎么打印_在Java编程中打印二维数组或矩阵
  7. cookies和session区别
  8. 江西省一级计算机考试试题,2江西省计算机一级考试试题
  9. realtek网卡mac硬改工具_浅谈设备异常、手机硬改参数
  10. Mock Server介绍
  11. java excel 冻结_poi excel 常用操作 [冻结、合并、链接]
  12. vs2019个性化配置
  13. 免费福利 Unity3D 项目资源分享链接(消消乐、斗地主、AR等)
  14. 微信小程序列表图片加载错误处理
  15. error C2144: syntax error: 'int' should be preceded by ';'
  16. 从技术面试官的角度谈谈简历和面试那些事儿
  17. vue监听滚动到底部加载更多
  18. 聚合数据api的使用
  19. Host文件是什么?host文件有什么作用?
  20. ofd在线预览功能开发 前端

热门文章

  1. 没想到下一代AI助手,来得这么突然
  2. Java开发规范(一)
  3. 4.18号C语言+操作系统。
  4. Java程序设计(Java9版):第0章 绪论(Introduction)
  5. 1、什么是压缩技术,起源于什么时候?
  6. 第五届浙江省网络安全竞赛预赛部分wp
  7. (干货)关于发布劳动合同示范文本的说明
  8. 划分子网的原理及方法
  9. 一些数据格式化-Eval( )和DataBinder.Eval(Container.DataItem, )的区别及用法
  10. Java软件工程师需要掌握哪些知识技巧?