【程序性能调优】分析gprof 结果含义
1、gprof gprof-test gmon.out -p 得到每个函数占用的执行时间
- % time :此函数使用的程序总运行时间的百分比。
- cumulative seconds:此函数和上面列出的所有函数运行时间总和。
- self seconds :此函数的运行时间,这是这个list的主要排序依据。
- calls :该函数被调用的次数,如果这个函数被配置,否则此处是空白。(proflie:我理解的是在编译该函数时有-pg选项)
- self Ts/call :每次调用该函数的平均时间,如果这个函数被配置,否则此处是空白(不同程序在此处显示的单位可能不同,会有s、ms、Ts)
- total Ts/call:每次调用该函数及其所调用的子函数的平均时间,如果这个函数被配置,否则此处是空白(不同程序在此处显示的单位可能不同,会有s、ms、Ts)
- name :函数的名称。这是这个清单的次要排序。索引显示了函数在gprof清单中的位置。如果索引在圆括号中,它将显示如果要显示它,它将出现在gprof list中的何处。
2、gprof gprof-test gmon.out -q 得到call graph,包含了每个函数的调用关系,调用次数,执行时间等信息
这个表描述了程序的调用关系树,并根据每个函数及其子函数所花费的总时间进行排序。
该表中的每个条目由几行组成。在左侧空白处的索引号行列出了当前函数。上面的几行列出了调用这个函数的函数,下面的几行列出了这个函数调用的函数。
对于该函数,字段有以下含义:
- index :表的每个元素的唯一索引号。索引号是按数字排序的,显示在每个函数名旁边,因此更容易查找函数在表中的位置。
- % time :调用该函数及其所调用的子函数的“总”的时间的百分比。(注:由于不同的角度、选项所排除的函数等,这些数字加起来不等于100%。)
- self :该函数的总用时
- children:该函数调用其子函数的总时间
- called :该函数被调用的次数。如果函数本身是递归调用的,那么这个数字只包含非递归调用,后面跟一个' +'和递归调用的数量。
- name :该函数的函数名。索引号在它后面显示。如果函数是循环,则循环号显示在函数名和索引号之间。
对于该函数的父函数,字段有以下含义:
- self :从执行该函数回到其父函数的时间,相当于该函数的self用时
- children :从执行该函数调用其子函数后回到到其父函数的时间,相当于该函数的children用时
- called :"该函数被该父函数调用的次数" / "该函数被调用的总次数"。该函数的递归调用不包括在' /'后面的数字中,也就是说该函数被调用的总次数不包括递归调用的次数。
- name :父函数的函数名。父索引号在其后显示。如果父函数是一个循环的成员,则在函数名和索引号之间显示循环号。
注:如果无法确定函数的父函数,则在“name”字段中显示 "<spontaneous>",其他字段都为空白。
对于该函数的子函数,字段有以下含义:
- self :从调用该子函数直到回到该函数的时间,相当于该子函数的self用时。
- children :从调用该子函数及其调用其子函数后回到该函数的时间,相当于该子函数的children用时。
- called :"该函数调用该子函数的次数" / "该子函数被调用的次数"。子函数的递归调用不包括在' /'后面的数字中。
- name :这是子函数的函数名。子索引号在其后打印。如果子函数是循环的成员,则循环号将在函数名和索引号之间显示。
如果调用关系图中有任何循环(circle),则有一个循环作为一个整体的条目。这个条目显示了谁调用了这个循环(作为父母)以及这个循环的成员(作为孩子)。
“+”递归调用条目显示循环内部的函数调用数量,每个成员的调用条目显示该成员从循环中的其他成员调用该函数的次数。
【程序性能调优】分析gprof 结果含义相关推荐
- TUNED-ADM 性能调优分析
@linuxtoy 主题大纲 tuned-adm 简介03 性能调优方向04 性能调优场景09 性能调优分析15 总结49 tuned-adm 简介 RHEL 自带的性能调优工具,通过针对特定应用场景 ...
- 应用性能调优分析与总结
当出现用户抱怨网站太卡.软硬件需要升级.系统性能不佳等情况,程序员这时需要对系统进行性能调优,实现性能最大化,满足业务的最新需求. 1 为什么要性能调优? 应用上线前在性能上无法满足需求. 应用系 ...
- java多线程程序性能调优 优化过程
我, 一多年c++开发,由于项目原因需要对一个性能底下的多线程java程序进行调优,百度google了几把,妈蛋,没有发现指导如何java线程调优的文章啊,都是一些java使用规范,我去,那我大jav ...
- CUDA程序性能调优
目录 1.kernel function parameters 2. local variables 3.shared memory with __syncthreads__ call 4.devic ...
- 性能测试实践|PerfDog助力微信小游戏/小程序性能调优
概述 随着近年来微信生态圈的发展,小游戏,小程序也随之爆火,同样伴随着的便是对于小游戏/小程序的用户体验的严格要求:微信团队也在自家的微信平台推荐使用PerfDog测试小游戏/小程序的性能. 1.评测 ...
- [development][profile][dpdk] KK程序性能调优
KK程序: 1. 两个线程,第一个从DPDK收包,通过一个ring数据传递给第二个线程.第二个线程将数据写入共享内存. 2. 第二个内存在发现共享内存已满时,会直接丢弃数据. 3. 线程二有个选项de ...
- 成为Java GC专家(5)—Java性能调优原则
2019独角兽企业重金招聘Python工程师标准>>> 这是"成为Java GC专家"系列的第五篇文章.在第一篇深入浅出Java垃圾回收机制中,我们已经学习了不同 ...
- java jvm调优_(第1部分,共3部分):有关性能调优,Java中的JVM,GC,Mechanical Sympathy等的文章和视频的摘要...
java jvm调优 我已经花了几个月的时间考虑审查有关性能调优,JVM,Java中的GC,Mechanical Sympathy等主题的文章和视频的缓存,并最终花了点时间–也许这就是重点我什么时候才 ...
- (第1部分,共3部分):有关性能调优,Java中的JVM,GC,Mechanical Sympathy等的文章和视频的摘要...
我已经花了几个月的时间考虑审查有关性能调优,JVM,Java中的GC,Mechanical Sympathy等主题的文章和视频的缓存,并最终花了点时间–也许这就是重点我什么时候需要做我的智力进步! 感 ...
最新文章
- 如何利用SQL求取微信的共同好友数?
- 内核编程之Hello_kernel
- element手机验证格式_Laravel 自定义封装表单验证类
- 小学C++编程入门书籍及相关资料介绍(二) 算法篇
- python解析xml文件选用模块_Python标准库系列之xml模块
- 推陈出新:网友解锁 source 命令新的姿势,血的教训!已准备跑路
- 智慧楼宇、消防系统、门禁管理、暖通空调、给排水、变配电、设备管理、停车管理、能源管理、故障检测、客流统计、运行控制、权限分配、物联网、Axure原型、rp原型、产品原型
- PMC联手云合作伙伴Canonical加入其Ubuntu OpenStack互通性实验室
- Apache Camel,Spring Boot 实现文件复制,转移 (转)
- springboot 打印日志
- 常用matlab画图命令 坐标轴倾斜
- 道路设计基础知识,让你一秒变大师
- 高漫 1060 Pro 数位板 Mac OS X 下无法设置 shift 快捷键解决方法
- MATLAB连接comsol后MATLAB语言方法
- HTTP协议概述 基本概念说明
- Codeforces 1156B
- overleaf 图片排版
- iPhone记步和Android计步,手机中运动步数是如何计算的?
- Android 插件化原理 完胜360插件框架 技术实战
- 什么是DBMS,什么是数据库?