使用Hotspot分析代码时间性能,优化运行时间

简介

 我们平时写的程序大多符合二八法则,即百分之八十的程序运行时间取决于那仅仅百分之二十的程序,所以找到着百分之二十的程序对于我们优化程序性能可谓是事办功倍,有时候我们追求代码中某个算法那仅一两步的优化,其实对于整体运行时间的优化作用可谓是微乎其微,本文章将介绍一种工具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文件,然后就可以看到你的程序的调用情况。
    可以看到函数时间运行占比等等信息,可以点击这些颜色条进入内部查看。

后续

经验分享 程序员 微信小程序 职场和发展