C++(Qt)软件调试:Windows 性能分析器WPA使用指南
创作时间:
作者:
@小白创作中心
C++(Qt)软件调试:Windows 性能分析器WPA使用指南
引用
CSDN
1.
https://m.blog.csdn.net/qq_43627907/article/details/145948876
软件开发中程序性能优化、性能瓶颈排查对开发人员来说是必不可少的技能。本文将详细介绍如何使用Windows性能分析器WPA进行CPU性能分析,包括环境准备、具体操作步骤和代码示例。
1 概述
软件开发中程序性能优化、性能瓶颈排查对开发人员来说是必不可少的技能。
常见的性能优化包括CPU使用率、内存使用率、内存泄漏、文件IO等。
Linux下的perf工具功能非常强大,但是可惜不支持Windows;而Windows中VS也提供了类似的工具(性能探查器),Windows除了VS自带的性能探查器外,还有更强大的WPA、WPR、xperf可用于性能分析。
- 可以使用xperf命令行工具或者WPR图形界面工具保存系统和应用程序事件到文件;
- 然后使用图形界面的WPA进行分析;
- WPA支持火焰图等多种图表分析;
- WPA支持随时启动记录和停止记录,不需要像其它分析工具在程序启动时运行;
- 并且WPA支持同时记录系统的和所有正在运行的进程的信息。
- 本文中只演示如何使用WPA进行CPU性能分析,还有更多强大功能没有演示。
演示环境:
环境 版本
系统 Windows11
编译器 msvc2017/2022由于WPA需要pdb符号表,所以如果是mingw编译器生成的程序需要使用cv2pdb工具转换。
2 环境准备
- 安装VS时Windows SDK中就包含了WPA分析工具;
- 或者单独下载安装进行安装;
- 可选择直接安装或者下载离线安装包;
- 安装完成后如下图所示。
3 程序性能分析
- 创建一个工程,这里我创建的是一个Qt工程;
- 添加如下所示代码:
#include "widget.h"
#include "ui_widget.h"
#include <vector>
#include <list>
using namespace std;
void fun1()
{
vector<int> arr;
for (int i = 0; i < 10000000; i++)
{
arr.push_back(i);
}
}
void fun2()
{
list<int> arr;
for (int i = 0; i < 10000000; i++)
{
arr.push_back(i);
}
}
void fun3()
{
vector<int> arr;
arr.reserve(10000000);
for (int i = 0; i < 10000000; i++)
{
arr.push_back(i);
}
}
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_clicked()
{
fun1();
fun2();
fun3();
}
- 编译启动程序后,运行WPR UI程序,如下图所示,然后点击【Start】开始记录;
- 记录完成后再次点击【Save】,如下所示保存记录信息到文件中。
- 启动WPA程序;
- 打开刚才保存的文件;
- 如下图所示,打开【Computation】【CPU Usage(Sampled)】【Utilization by COFF Group,Module, Function】;
打开后如下图所示,会显示所有程序的火焰图;- 然后按快捷键【Ctrl + F】打开搜索窗口,选择【Process】,然后输入需要查找的程序名称;
找到需要分析的程序后,鼠标右键选择【Filter To Selection】;- 这样就只会显示选中程序的火焰图了。
- 然后选择【Configure Symbol Paths】设置pdb符号表路径,选择【Load Symbols】加载符号表;
- 加载完成符号表后就可以如下所示查看具体函数的性能情况了。
- 可以在火焰图窗口上方直接搜索具体的函数名称;
- 或者可以打开搜索窗口,选择【Stack】查找具体的函数名称。
- 当火焰图过大时,看不清楚,可以选择行,然后鼠标右键设置【Filer To Flame】显示选中行往上的火焰图,或者设置【Undo Filer】取消。
- 注意:如果勾选了下图中的【Filter Lower Values】会对设置【Filer To Flame】的精确度有影响。
- 如果加载符号表时非常慢,可能是在联网下载符号表,可以选择关闭网络获取取消勾选下载符号表;
4 相关地址
- Windows 性能工具包 | Microsoft Learn
- 下载并安装 Windows ADK | Microsoft Learn
- Windows 性能分析器 | Microsoft Learn
热门推荐
中天的基础解释
《人民日报》关注贵州:大力实施屯堡文化等历史文化研究推广工程
年轻人的困境:我们为何活得如此辛苦?
钟南山院士亲自体验澳科大研发澳本堂AI中医药机器人,中医药茶饮智慧新体验
美国移民签证类型详解及选择
如何让娃提升逻辑思维能力?阅读侦探小说!
泸州旅游必尝的12道特色美食,让你品味地道四川风味
施工方案详解:作用、类型、应用场景及案例分析
手机过热的原因分析及解决方法与日常保养建议
孕期吃菠菜有哪些好处
如何评估黄金投资的风险率?这种风险评估方法有哪些实际应用?
如何查农村土地确权信息
香薰与健康:是香氛怡人还是“隐形刺客”?
巴比伦是如何影响古代近东历史的?
手机电池碱性与碳性哪种更耐用?
高血压饮食宜忌解析!
针织物六大参数详解:从匹长到织物密度的专业解读
一种不标热量的饮品,却能让你偷偷发胖
公路工程质量等级评定标准详解
心理健康与幸福:家长如何帮助孩子建立积极心态
螺丝扭力对照表详解
汽车出口暴增,零部件出口“连带起飞”,这四大领域最吃香
AI写作一键生成:文学创作的科技飞跃与新时代的文学革命
LabVIEW 32位与64位版本比较分析:性能与兼容性详解
ARM内存管理单元MMU详解:从虚拟地址到物理地址的映射机制
从“糖”说起——正确认识糖尿病
软件工程专业考研难度高吗 有必要考研吗
等待Sora上线的8个月,AI 视频到底什么水平了?
股票天地板是什么意思?
Word表格美化技巧:4个实用方法让你的表格更专业