代码剖析(Code profiling)
程序员在优化软件性能时要注意应尽可能优化软件中被频繁调用的部分,这样才能对程序进行有效优化。使用真实的数据,精确的分析应用程序在时间上的花费的行为就成为_代码剖析_。如今几乎全部的开发平台都支持代码剖析,本文要介绍的是linux下针对c/c++的GNU的gprof代码剖析工具。html
PS:gprof不仅能对c/c++,还可对Pascal和Fortran 77进行代码剖析。linux
gprof
GNU gprof 是一款linux平台上的程序分析软件(unix也有prof)。借助gprof能够得到C/C++程序运行期间的统计数据,例如每一个函数耗费的时间,函数被调用的次数以及各个函数相互之间的调用关系。gprof能够帮助咱们找到程序运行的瓶颈,对占据大量CPU时间的函数进行调优。c++
PS:gprof统计的只是用户态CPU的占用时间,不包括内核态的CPU时间。gprof对I/O瓶颈无能为力,耗时甚久的I/O操做极可能只占据极少的CPU时间。git
如何使用gprof
gprof的使用很简单,遵循如下步骤便可:程序员
参考文档:github
1 https://fooyou.github.io/document/2015/07/22/performance-tools-for-linux-cplusplus.htmlubuntu
http://www.javashuo.com/article/p-zyvgcuut-ec.html函数
-----------------------------------------------------工具
ljc@ubuntu:~$ perf性能
程序“perf”还没有安装。 您能够使用如下命令安装:
sudo apt install linux-tools-common
ljc@ubuntu:~$ sudo apt install linux-tools-common
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
ljc@ubuntu:~$ perf
WARNING: perf not found for kernel 4.4.0-24
You may need to install the following packages for this specific kernel:
linux-tools-4.4.0-24-generic
linux-cloud-tools-4.4.0-24-generic
You may also want to install one of the following packages to keep up to date:
linux-tools-generic
linux-cloud-tools-generic
ljc@ubuntu:~$ sudo apt-get install linux-tools-4.4.0-24-generic linux-cloud-tools-4.4.0-24-generic linux-tools-generic linux-cloud-tools-generic
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成