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知识库与数据治理的奇妙协同:如何实现智能化转型的关键突破?
视觉检测相机特点全解析:主观测试与客观测试的关键指标
小个子女生必看!高桥南教你穿搭,148cm也能时尚!
半包装修包含哪些内容?商话的真实情况如何?
中西医关于“脾”的概念不同,作用也各不一样,一文帮你分清区别
遗体和人体器官捐献的流程及指南
IPv6的地址类型
半飞秒手术的利弊及术后恢复时间详解
个性化半飞秒/普通半飞秒/smart全激光区别是什么?一文讲透!!
鸡蛋不煮熟,可能菌从口入
河南省盲人学校·郑州市盲聋哑学校简介
咖啡壶种类有很多种 如何选择适合自己的咖啡壶?
婚姻法爱的三要素:相互尊重、信任与支持
如何用日语表达‘好久不见’?
古代刑法中的胸口碎大石:酷刑与法律的碰撞
1万年文化史的平凉,没有高铁和机场,喊天天不应,叫地地不灵!
自然语言处理在线问答提升信息获取效率的智能工具
抱团、耍心机,社交综艺要这么玩儿吗?
电动机的维护与保养操作规程
白象究竟有何独特之处,使其成为亚洲象属中的珍稀动物?
武汉企业如何选择服务器租用与托管服务?全面对比与优劣分析
为何90%的医生不敢推荐干细胞治疗?
一战期间美国军队步枪装备详解
汇率的影响因素及外汇业务办理提示
黑洞中间人终于现身,中国科学家用宇宙弹弓破解百年谜题!
失眠怎么办?心理师教你5招缓解失眠
高血压患者出现哪些情况需要马上就医?
高考数学高频考点速记口诀汇总
摩托车怎样保护车漆?有哪些保护车漆的措施?