ToB企服应用市场:ToB评测及商务社交产业平台

标题: Linux C++ 开发9 - 手把手教你使用gprof性能分析工具 [打印本页]

作者: 丝    时间: 2024-9-23 18:41
标题: Linux C++ 开发9 - 手把手教你使用gprof性能分析工具
1. 什么是gprof?

gprof 这是一个GNU的性能分析工具,它是GCC(GNU Compiler Collection,GNU编译器套件)的一部分,与GCC编译器紧密集成。可用于分析步伐的函数调用关系和每个函数的运行时间。它通过在编译时插入性能分析代码来收集函数调用信息和执行时间,来帮助开发者识别性能瓶颈。
gprof的长处:
gprof的缺点:
2. gprof的用法

2.1. 编译步伐

起首,必要使用 -pg 选项编译你的步伐:
  1. g++ -pg -o my_program my_program.cpp
复制代码
除了-pg外,还有一个参数-p,它可以天生得当prof性能分析工具的代码,他们之间的区别如下:
要理解上面描述,又不得不了解prof和gprof两个工具的关系了。
2.2. 运行步伐

编译完成后,运行你的步伐:
  1. ./my_program
复制代码
运行过程中,gprof 会天生一个名为 gmon.out 的文件,其中包罗了性能分析数据。
2.3. 天生分析报告

运行完步伐后,使用 gprof 工具天生分析报告:
  1. gprof my_program gmon.out > analysis_report.txt
复制代码
天生的 analysis_report.txt 文件中包罗了函数的调用时间、调用次数等详细信息。
2.4. gprof常用参数说明

gprof下令格式:
gprof [options] [executable-file [profile-data-files…]] [> outputfile] Gprof下令行格式 Gprof command line format
options参数说明:
下令中文解释英文解释-b简便输出,不表现冗长的解释Brief output. Do not display verbose explanations-s将多个gmon.out文件合并Summarize: merge several profile data files for cumulative stats-p表现步伐的每个函数的执行时间统计Display program’s functions execution time statistics-q表现步伐的每个函数的调用关系Display program’s2.5. 分析报告解读

gprof 天生的报告通常包罗以下几个部分:
2.5.1. Flat profile 各个字段的含义

字段含义% time该函数消耗时间占步伐所有时间百分比Cumulative seconds步伐的累积执行时间(只是包罗gprof可以大概监控到的函数)Self Seconds该函数本身执行时间(所有被调用次数的合共时间)Calls函数被调用次数Self TS/call函数平均执行时间(不包罗被调用时间,函数的单次执行时间)Total TS/call函数平均执行时间(包罗被调用时间,函数的单次执行时间)name函数名2.5.2. Call graph 各个字段的含义

字段含义Index索引值%time函数消耗时间占所有时间百分比Self函数本身执行时间Children执行子函数所用时间Called被调用次数Name函数名3. Demo演示

3.1. demo04.cpp 源码

[code]#include int64_t add(int64_t a, int64_t b){    return a + b;}void func1(){    int sum = 0;    for (int i = 0; i < 1000000; ++i)    {        sum = add(sum, i);    }    std::cout




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4