Windows 应用性能和基础概述

提高应用程序的性能和基础可让其拥有经过精心设计的观感,同时可为客户节省时间、资金、延长电池寿命和减少开发工作量。 你的应用将消耗更少的电量,从而延长电池寿命并减少碳排放。 应用在成本更低的硬件上运行更加平稳了。 客户的工作效率提高。

本页概述了用于测量、了解和优化 Windows 应用程序性能的技术和开发工具。

提高 WinUI 3 应用的性能

对于使用 Windows 应用 SDK生成的 WinUI 3 应用,请遵循此工作流改进启动和日常交互。 使用度量选择优化,然后按照链接指南获取实现详细信息。

度量基线

选择启动方案和频繁的交互(如导航或滚动),并 设置可衡量的性能目标。 在具有代表性的硬件上测量发布版本。 分别记录冷启动和热启动,包括应用真正达到可交互状态的时间,而不只是其窗口出现的时间。

使用 WinUI 3 性能分析 查找昂贵的 UI 帧并调查其 CPU 成本。 如果需要有关选择探查器的帮助,请参阅在Visual Studio性能探查器与Windows Performance Toolkit之间进行选择。

优化启动

确定必须完成的初始化和 UI 创建,然后用户才能与应用交互。 延迟无状态工作并逐步加载其他数据,而不将加载指示器视为已完成的启动。

从 WinUI 应用启动最佳做法开始。 如果 XAML 创建是瓶颈,请按照 优化 XAML 加载 来减少元素、延迟加载和资源管理。

提高响应速度和渲染效果

选择与测量结果中的瓶颈相匹配的指导建议:

症状 Guidance
应用加载数据或计算结果时输入或导航停止 保持 UI 线程响应,包括异步 I/O、后台计算和 UI 线程更新。
布局耗时太长,尤其是使用重复模板 优化 XAML 布局 以减少不必要的布局结构。
列表或网格滚动缓慢或创建太多元素 针对 UI 虚拟化和较小的项模板优化 ListView 和 GridView;当数据本身的加载成为瓶颈时,请使用数据虚拟化。

重新测量和防止回归

在每次更改后,在可比较条件下重复相同的方案,并将结果与基线进行比较。 检查启动和交互时间以及内存和 CPU 使用情况:一个领域的改进可能会增加其他地方的成本。

将度量值保留为回归检查,以检查将来的更改。 随着应用不断演进,使用 规划和衡量应用性能 来优化你的目标和监测方案。

什么是应用程序性能?为什么它很重要?

性能是衡量应用程序使用系统资源来有效完成您设计它做的事情的效率。 它涵盖了程序如何与基础设备交互的不同方面,包括:

  • CPU 使用率
  • 内存占用率
  • 功耗
  • 网络和存储利用率
  • 动画性能

所有这些属性都具有与其关联的成本元素:例如,应用程序使用的 CPU 量是多少? 用户的带宽会被消耗多少? 应用程序加载此特定页面的速度有多快?

用户期望性能作为他们使用的软件的基本属性。 他们希望其应用程序具有响应能力,并有效地利用其系统的资源。 性能不佳的应用程序会导致沮丧,这可能导致用户参与度降低。 为了为客户提供最佳体验,因此,使性能成为开发工作流的一部分至关重要。

何时应测量应用程序性能?

应用程序性能可以跨越开发过程的多个阶段。 它对从所选数据结构到用于生成应用程序的技术等各种内容都有影响。 在开发应用程序时,请牢记性能的重要性,并计划作为更新和维护的一部分,定期进行性能测试。

如何进行性能测量

下面是一些有关如何测试应用程序以提升性能的建议。

  • 利用你对你应用程序的了解。 了解用户最常见的方案将使你能够明智地花在优化正确的事情上。 如果你有有关用户如何与应用程序交互的数据,这将是一个很好的时机来查看它。
    • 你的用户大部分时间都在何处?
    • 客户使用你的软件时的最重要的事情是什么?
    • 应用程序的硬件要求是什么?
  • 为最重要的用户方案设置性能目标。
  • 准确了解要优化的内容。 是否为 CPU? 电池? 网络吞吐量?
  • 选择将用于进行测量的工具。
  • 测试时应用科学思维模式。 在受控环境中创建基准。 然后,进行更改并重新度量,以查看更改如何影响应用程序的行为。
  • 将回归测试添加到测试环境中。 这将确保性能指标不会随时间而回归。

交错指标

虽然在分析期间通常会专注于一个性能领域,但请注意,区域通常相互交织。 一个改进可以级联到其他方面的改进。

例如,解决能耗通常是一个同步性问题。 减少内存使用率可能会导致减少使用 CPU 所需的时间。 在某些情况下,一个领域中花费的额外资源可以在另一个领域中带来更显著的改善,例如,通过增加内存消耗,可以通过缓存减少网络或存储利用率。

做出更改的决定取决于什么对客户来说最重要。

可以使用哪些工具来度量应用程序性能?

有多种不同的工具可用于测量 Windows 应用程序的性能。

如果不确定要选择哪些工具,请查看文章:在 Visual Studio 性能探查器与 Windows 性能工具包之间进行选择。

Visual Studio 图标 Visual Studio 性能探查器

Visual Studio提供开发工具来帮助你监视应用程序,并为你的源代码提供见解。 访问下面的资源,了解如何使用这些工具直接在开发环境中优化代码。

Windows 性能分析器图标 Windows 性能工具包

借助 Windows 性能记录器和 Windows 性能分析器,可以使用 Windows 事件跟踪 (ETW) 对应用程序和整个系统进行密切监视和详尽分析。 请参阅以下链接,了解如何入门。

PerfView 图标 PerfView

PerfView 是 .NET 团队创建的开源监视和分析工具,用于调查 .NET 性能问题。 由于它可以解码 .NET 符号和托管内存,所以很适合用于托管应用程序。

SizeBench 图标 SizeBench

SizeBench 是一个实用工具,可帮助调查和减小编译的本机代码二进制文件(DLL、EXE 和其他 PE 文件)的大小。

其他资源

博客和新闻

通过我们的性能专家撰写的开发人员博客了解“幕后”信息,帮助自己构建最佳版本的应用。

社区和支持

性能和可持续性

性能工程直接与可持续软件运动交汇。 大多数电网燃烧化石燃料来发电。 当应用程序在电脑上运行时,对于单个用户,它消耗的电量增量可能很小,但会随着用户群的增长而增加。

有兴趣了解性能工程与可持续性之间的关联? 查看 绿色软件工程 原则和Microsoft的 可持续软件博客。