简介
我们平时写的程序大多符合二八法则,即百分之八十的程序运行时间取决于那仅仅百分之二十的程序,所以找到着百分之二十的程序对于我们优化程序性能可谓是事办功倍,有时候我们追求代码中某个算法那仅一两步的优化,其实对于整体运行时间的优化作用可谓是微乎其微,本文章将介绍一种工具Hotspot,它可以帮助我们分析我们的代码各个部分的耗时.
perf是Linux下的一款性能分析工具,能够进行函数级与指令级的热点查找。它由一个叫Performance counters的内核子系统实现,基于事件采样原理,以性能事件为基础,支持针对处理器相关性能指标与操作系统相关性能指标的性能剖析,可用于性能瓶颈的查找与热点代码的定位。
Hotspot是KDAB
发布的一个新的分析perf.data
的工具,也可以说是perf
的图形界面。除了比perf report更直观外,其最大看点就是集成了火焰图,也就是FlameGraph
。
perf安装
perf是系统性能分析工具,大到系统全局性性能,再小到进程线程级别,甚至到函数及汇编级别。
- 查看电脑有没有装perf:在终端输入 perf ,看输出的信息。
- 如果没有安装就根据输出信息安装,
sudo apt install linux-tools-4.15.0-43-generic
sudo apt install linux-cloud-tools-4.15.0-43-generic
然后终端输入perf,已安装。
Hotspot安装
1. 安装依赖项(On Debian/Ubuntu)
add-apt-repository ppa:kubuntu-ppa/backports
apt-get update
sudo apt-get install libkf5threadweaver-dev libkf5i18n-dev libkf5configwidgets-dev libkf5coreaddons-dev libkf5itemviews-dev libkf5itemmodels-dev libkf5kio-dev libkf5solid-dev libkf5windowsystem-dev libelf-dev libdw-dev cmake extra-cmake-modules gettext
2. 安装Hotspot
# 下载github上的hotspot项目
git clone --recurse-submodules https://github.com/KDAB/hotspot.git
mkdir build-hotspot
cd build-hotspot
cmake ..
# 编译
make
make install
注:HotSpot还没有为大多数Linux发行版打包-您可能不得不使用AppImage,它将在最近的Linux发行版上正常工作。
安装AppImage:
wget https://github.com/KDAB/hotspot/releases/download/v1.1.0/hotspot-v1.1.0-x86_64.AppImage
# 设置执行权限
chmod +x hotspot-v1.1.0-x86_64.AppImage
./hotspot-v1.1.0-x86_64.AppImage
3. 使用Hotspot
- 终端输入hotspot就可以知道有没有安装成功了。
- 选择File->Record data,然后在Application:处输入你的可执行文件,下面的Working Directory:是你的当前工作目录,如果你的参数读取出错,可能跟这个路径有关。
- 然后点击“Start Recording”开始运行程序,运行结束后会在你的目录里看到perf.data等文件。
- 点击右上角“Home”,Open File打开你的perf.data文件,然后就可以看到你的程序的调用情况。
- 可以看到函数时间运行占比等等信息,可以点击这些颜色条进入内部查看。
后续
喜欢的话可以关注一下我的公众号技术开发小圈,尤其是对深度学习以及计算机视觉有兴趣的朋友,我会把相关的源码以及更多资料发在上面,希望可以帮助到新入门的大家!