Linux性能优化工具:gprof简记
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简记相关推荐
- Linux性能优化:性能优化工具
1.Linux网络协议栈 1.1 首先是网络接口层和网络层,它们主要负责网络包的封装.寻址.路由,以及发送和接收.每秒可处理的网络包数 PPS,就是它们最重要的性能指标(特别是在小包的情况下).你可以 ...
- linux性能优化实战学习笔记-(1)CPU性能分析工具与套路
版权归Linux性能优化实战 作者倪鹏飞,本文主要是为学习.整理相关知识点,请勿用作商用,侵删. linux性能分析工具 下图来自:Brendan D. Gregg http://www.brenda ...
- 开发人员如何解决Linux性能优化之痛?
这些问题或者场景,你是否曾经遇到过? • 流量高峰期,服务器CPU使用率过高报警,你登录Linux上去top完之后,却不知道怎么进一步定位,到底是系统CPU资源太少,还是程序并发部分写的有问题? • ...
- 如何学习Linux性能优化?
如何学习Linux性能优化? 你是否也曾跟我一样,看了很多书.学了很多 Linux 性能工具,但在面对 Linux 性能问题时,还是束手无策?实际上,性能分析和优化始终是大多数软件工程师的一个痛点.但 ...
- linux性能优化--cpu篇
linux性能优化--cpu篇 前言 负载 CPU使用率 proc perf 一些链接 `perf list` 比较有用的event `perf stat` `perf record` Profili ...
- Linux性能优化方向及相关工具
1. 考察性能的指标 从应用负载的角度 吞吐 延时 从系统资源的角度 CPU使用率 内存饱和度 2. 定位性能问题的步骤 选择指标评估性能 设置性能优化的目标 进行性能基准测试 分析和定位性能瓶颈 对 ...
- 推荐学习-Linux性能优化实战
学习交流加(可免费帮忙下载CSDN资源): 个人微信: liu1126137994 学习交流资源分享qq群1(已满): 962535112 学习交流资源分享qq群2: 780902027 推荐一个学习 ...
- Linux 性能优化全景指南
大家好 我是坤哥 之前一些朋友觉得奇怪,说你主要做 Java 的,公号怎么时不时地也推送一些 Linux 文章,其实不管你是哪个 xx 语言的工程师,要想进阶,Linux 性能优化是必备知识,举个例子 ...
- Linux性能优化实战学习笔记:第四十六讲=====实战分析
Linux性能优化实战学习笔记:第四十六讲 一.上节回顾 不知不觉,我们已经学完了整个专栏的四大基础模块,即 CPU.内存.文件系统和磁盘 I/O.以及网络的性能分析和优化.相信你已经掌握了这些基础模 ...
最新文章
- java开发面试复试_java开发实习生面试经历
- ML:MLOps系列讲解之《基于ML的软件的三个层次之02 Model: Machine Learning Pipelines 2.1~2.4》解读
- String类型的字符长度(码点/代码单元的区别)
- php 从字符中随机挑一个数,php 对中文字符串的处理- 随机取出指定个数的汉字...
- 基础知识巩固四(问题部分)
- java中矩阵怎么打印_在Java编程中打印二维数组或矩阵
- cookies和session区别
- 江西省一级计算机考试试题,2江西省计算机一级考试试题
- realtek网卡mac硬改工具_浅谈设备异常、手机硬改参数
- Mock Server介绍
- java excel 冻结_poi excel 常用操作 [冻结、合并、链接]
- vs2019个性化配置
- 免费福利 Unity3D 项目资源分享链接(消消乐、斗地主、AR等)
- 微信小程序列表图片加载错误处理
- error C2144: syntax error: 'int' should be preceded by ';'
- 从技术面试官的角度谈谈简历和面试那些事儿
- vue监听滚动到底部加载更多
- 聚合数据api的使用
- Host文件是什么?host文件有什么作用?
- ofd在线预览功能开发 前端