Linux代码性能分析工具

news2024/11/24 3:11:51

一、gperftools

1、gperftools安装

docker下需要安装gperftools、ghostscript、graphviz

gperftools:

# 从github下载gperftools源码并解压
wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.9.1/gperftools-2.9.1.tar.gz
tar -xvf gperftools-2.9.1.tar.gz
 cd gperftools-2.9.1
# 编译
./configure
make -j8
# 安装到系统文件夹
sudo make install

ghostscript:

sudo apt install ghostscript

#或者编译安装
地址: 
https://ghostscript.com/releases/gsdnld.html 或
https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/

tar -zxvf ghostscript-9.55.0.tar.gz(根据自己下载版本来定)
cd ghostscript-9.55.0
./configure --prefix=/usr/local/ghostscript
mkdir obj
mkdir bin
make all
make install
make so
2.配置环境变量
vi /etc/profile
写入 export PATH=$PATH:/usr/local/ghostscript/bin
3.查看是否安装成功
gs -v

2、性能分析

gperftools有text和pdf两种输出方式。具体分析如下:

通过cmake进行修改编译。在链接的时候增加对profiler库的链接

target_link_libraries(${PROJECT_NAME}
        profiler
        xxxxx
)

在代码中添加头文件和ProfilerStart()、ProfilerStop()

 txt

 pdf

 

 

二、perf

1、perf安装

 

# 下载linux-tools-common
sudo apt-get install linux-tools-common
#查看是否存在perf
perf --version
#如果不存在,可以下载特定的内核版本下的tools,根据命令行的提示,我的命令是, 这个命令需要下载特定内核版本的工具, 命令 uname -r 查看内核版本
sudo apt-get install linux-tools-5.4.0-122-generic
#再检查一下
perf --version
perf version 5.4.192

安装过程中可能会出现一下报错 

WARNING: perf not found for kernel 4.15.0-39

  You may need to install the following packages for this specific kernel:
    linux-tools-4.15.0-39-generic
    linux-cloud-tools-4.15.0-39-generic

  You may also want to install one of the following packages to keep up to date:
    linux-tools-generic
    linux-cloud-tools-generic

首先,根据提示安装相关package即可

如果无法找到相关package,可通过下面方法解决

 

#其实perf已经内置在linux-tools-generic里面,所以安装后创建perf软链接即可
sudo apt install linux-tools-generic
sudo ln -s ln -s /usr/lib/linux-tools/4.15.0-162-generic/perf /usr/bin/perf

#其中4.15.0-162-generic字段酌情替换

 

2、编译代码

根据自己的代码酌情编译即可

3、perf分析


#具体指令可百度 
#1、record生成perf.data文件 perf record -g demo 
#2、report分析相关perf.data文件 perf reprot -g

 

3、其他分析工具

3.1 gprof

编译的时候使用-pg,通过使用一个gprof2dot.py输出一个与gperftools类似的pdf

 

3.2 火焰图

工具:git clone https://github.com/brendangregg/FlameGraph.git,操作方式与gperftools类似。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/531742.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(1分钟速览)图像金字塔对比--光流法and fast角点

图像金字塔对比--光流法and fast角点 ​ fast角点以计算快为出名,但是其不具有尺度不变性和旋转不变性。针对尺度不变性,其说的是对于远处和近处相同的一个物体,可能近处能够检测出来有角点,但是放远了以后就不一定能检测出来角点…

良好的水生态环境对人居生活的帮助

水是生命之源,良好的水源生态,对于人们的生活健康提供很大的作用,在农村污水处理中,利用污水处理设备进行水源净化排放是很常用的手段。 良好的水环境对人居生活有很多的帮助,主要包括以下几个方面: 1.提供…

类和对象 - 中(C++)

目录 类的6个默认成员函数 一、构造函数 概念 特性 二、析构函数 特性 三、拷贝构造函数 概念 特性 四、赋值运算符重载 运算符重载 前置和后置重载​​​​​​​ 赋值运算符重载 五、& 取地址操作符重载 六、const & 取地址操作符重载 认识const成员 const & 运…

第七章 TensorFlow实现卷积神经网络--代码调试

注:实验工具为jupyter,该python环境为3.7并安装了1.14.0版本的tensorflow ,这是本人基于最新版的anaconda下新建的环境,至于在头歌环境平台及其他平台并未验证,而我们需要安装和更新包也需要在自己新建的环境命令行下才有效。 //这…

CloudCompare二次开发之如何通过PCL进行点云采样?

文章目录 0.引言1.CloudCompare界面设计采样(sample)按钮2.RandomSample随机下采样3.VoxelGrid体素下采样4.UniformSampling均匀采样5. MovingLeastSquares增采样6.SamplingSurfaceNormal非均匀体素采样 0.引言 因笔者课题涉及点云处理,需要通过PCL进行点云数据一系…

MySQL之数据目录

前言 本文章收录在MySQL性能优化原理实战专栏,点击此处查看更多优质内容。 本文摘录自 ▪ 小孩子4919《MySQL是怎样运行的:从根儿上理解MySQL》 我们知道像InnoDB、MyISAM这样的存储引擎都是把表存储在磁盘上的,而操作系统用来管理磁盘的那…

C. Classy Numbers(dfs构造 + 组合数学)

Problem - C - Codeforces 让我们称某个正整数为“优美的”,如果它的十进制表示中不超过3个数字不为零。例如,数字4、200000、10203是优美的,而数字4231、102306、7277420000则不是。 给定一个区间[L;R],请计算在此区间内有多少个…

Linux awk流编辑器

awk流编辑器 工作原理 逐行读取文本,默认以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,并按模式或者条件执行编辑命令。 sed命令常用于一整行的处理,而awk比较倾向于将一行分成多个“字段”然后再进行处理…

pix2pix

Image-to-Image Translation Using Conditional Adversarial Networks 1: pix2pix也是CGAN的一种,pix2pix可以学习输入到输出的映射,同时也学习了损害函数去训练这个映射。这是一个大一统的方法去实现从标签合成图像,从边界图重建…

【FMC139】多通道采集--基于 VITA57.1 标准的4 路500MSPS/1GSPS 14 位AD 采集子卡模块(AD9680/HMC7044)

板卡概述 FMC139 是一款基于VITA57.1 标准规范的JESD204B 接口FMC 子卡模块,该模块可以实现4 路14-bit、500MSPS/1GSPSADC采集功能。该板卡ADC 器件采用ADI 公司的AD9680 芯片,全功率-3dB 模拟输入带宽可达2GHz。该ADC 与FPGA 的主机接口通过8通道的高速串行GTX 收…

AutoSAR PNC和ComM

文章目录 PNC和ComMPNC管理NM PDU结构及PNC信息位置如何理解节点关联PNCPNC状态管理 ComM 通道状态管理 PNC和ComM PNC 和 ComM层的Channel不是一个概念,ComM的Channel对应具体的物理总线数。 在ComM模块中,一个Channel可以对应一个PNC,也可…

AIGC产业研究报告2023——语言生成篇

易观:今年以来,随着人工智能技术不断实现突破迭代,生成式AI的话题多次成为热门,而人工智能内容生成(AIGC)的产业发展、市场反应与相应监管要求也受到了广泛关注。为了更好地探寻其在各行业落地应用的可行性…

java字类与继承

文章目录 一、Java子类与父类二、Java子类的继承性三、Java子类与对象四、Java成员变量的隐藏和方法重写五、Java super关键字六、Java final关键字七、Java对象的上转型对象八、Java继承与多态九、Java abstract类和abstract方法总结 一、Java子类与父类 继承就是一种由已有的…

电脑无法安装软件?不用慌,这样做可以快速解决!

案例:为什么我的电脑不能下载软件? 【在学习的过程中,需要下载一些软件工具。按照老师给的软件步骤,电脑还是无法安装软件,有小伙伴知道怎么回事吗?】 在使用电脑的过程中,很多小伙伴都会遇到…

【C++】unordered_map和unordered_set的模拟实现

一、改造HashTable 实现了哈希表&#xff08;开散列&#xff09;&#xff0c;再将其封装为unordered_map和unordered_set。 HashTable的改造与RBTree的改造大致相同&#xff1a; 改造节点 template<class T> struct HashNode {//std::pair<K, V> _kv;//HashNod…

【AI思维空间】ChatGPT纵横编程世界,点亮智慧火花 | 京东云技术团队

作者&#xff1a;京东零售 王英杰 概述 该文档记录云交易开发小伙伴儿们在开发过程中的实际应用案例&#xff0c;记录典型案例&#xff0c;以解决开发过程中的实际问题为主&#xff0c;涵盖设计方案、编码、测试、集成、部署等等。 目的&#xff1a;贡献最佳实践&#xff0c;…

案例6:Java社区志愿者服务系统设计与实现开题报告

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

全面升级:知否AI问答场景导航功能震撼登场

今日&#xff0c;知否AI问答平台推出全新的场景功能&#xff0c;为用户提供更全面、高效的智能问答服务&#xff0c;再也不用担心找不到适合自己的场景入口了。 此次升级涵盖了50多个场景&#xff0c;包括论文助手、公司文案、营销文案、多语言翻译、行政公文、科研课题、招投…

bat脚本、dos命令

bat脚本 bat脚本就是DOS批处理脚本&#xff0c;就是将一系列DOS命令按照一定顺序排列而形成的集合&#xff0c;运行在windows命令行环境上。这个文件的每一行都是一条DOS命令 在命令提示下键入批处理文件的名称&#xff0c;或者双击该批处理文件&#xff0c;系统就会调用Cmd.…

服务器信息收集

#Version&#xff1a;1.2 #Modify Date&#xff1a;2013-05-21 #说明&#xff1a; #该脚本可以获取计算机名,域名,IP地址,操作系统版本,CPU名称单颗CPU内核数量*CPU个数,内存大小(GB),单块磁盘大小,计算机序列号,制造商,计算机型号 #该脚本先将计算机信息输出到txt文件中&…