代碼剖析(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
正在讀取軟件包列表... 完成
正在分析軟件包的依賴關係樹
正在讀取狀態信息... 完成