提高应用程序的性能和基础可让其拥有经过精心设计的观感,同时可为客户节省时间、资金、延长电池寿命和减少开发工作量。 你的应用将消耗更少的电量,从而延长电池寿命并减少碳排放。 应用在成本更低的硬件上运行更加平稳了。 客户的工作效率提高。
本页概述了用于测量、了解和优化 Windows 应用程序性能的技术和开发工具。 如果要编写 UWP 应用程序,请务必同时参阅 UWP 性能文档。
什么是应用程序性能?为什么它很重要?
性能是衡量应用程序如何有效利用系统资源来完成预期任务的效率。 它涵盖了程序如何与基础设备交互的不同方面,包括:
- CPU 使用率
- 内存占用率
- 功耗
- 网络和存储利用率
- 动画性能
所有这些属性都具有与其关联的成本元素:例如,应用程序使用的 CPU 量是多少? 用户的带宽会被消耗多少? 应用程序加载此特定页面的速度有多快?
用户期望性能作为他们使用的软件的基本属性。 他们希望其应用程序具有响应能力,并有效地利用其系统的资源。 性能不佳的应用程序会导致沮丧,这可能导致用户参与度降低。 为了为客户提供最佳体验,因此,使性能成为开发工作流的一部分至关重要。
何时应测量应用程序性能?
应用程序性能可以跨越开发过程的多个阶段。 它对从所选数据结构到用于生成应用程序的技术等各种内容都有影响。 在开发应用程序时,请记住性能,并计划定期执行性能测试,作为更新和维护应用程序的一部分。
如何进行性能测量
下面是一些有关如何测试应用程序以提升性能的建议。
- 利用你对你应用程序的了解。 了解用户最常见的方案将使你能够明智地花在优化正确的事情上。 如果你有有关用户如何与应用程序交互的数据,这将是一个很好的时机来查看它。
- 你的用户大部分时间都在何处?
- 客户使用你的软件时的最重要的事情是什么?
- 应用程序的硬件要求是什么?
- 为最重要的用户方案设置性能目标。
- 准确了解要优化的内容。 是否为 CPU? 电池? 网络吞吐量?
- 选择用于执行度量的工具。
- 测试时应用科学思维模式。 在受控环境中创建基准。 然后,进行更改并重新度量,以查看更改如何影响应用程序的行为。
- 将回归测试添加到测试环境中。 这将确保性能指标不会随时间而回归。
交错指标
虽然在分析期间通常会专注于一个性能领域,但请注意,区域通常相互交织。 一个改进可以级联到其他方面的改进。
例如,解决能耗通常是一个同步性问题。 减少内存使用率可能会导致减少使用 CPU 所需的时间。 在某些情况下,在一个区域中花费的其他资源在另一个区域中产生更大的影响,例如,增加内存消耗可以通过缓存减少网络或存储利用率。
做出更改的决定取决于什么对客户来说最重要。
可以使用哪些工具来度量应用程序性能?
有多种不同的工具可用于测量 Windows 应用程序的性能。
如果不确定要选择什么工具,请查看以下文章:选择 Visual Studio 性能探查器或 Windows 性能工具包。
Visual Studio 性能探查器
Visual Studio 提供工具,帮助您监控应用程序,并提供源代码中的见解。 访问下面的资源,了解如何使用这些工具直接在开发环境中优化代码。
Windows Performance Toolkit
借助 Windows 性能记录器和 Windows 性能分析器,可以使用 Windows 事件跟踪 (ETW) 对应用程序和整个系统进行密切监视和详尽分析。 访问以下链接,了解如何开始操作。
PerfView
PerfView 是 .NET 团队创建的开源监视和分析工具,用于调查 .NET 性能问题。 由于它可以解码 .NET 符号和托管内存,所以很适合用于托管应用程序。
PerfView 教程系列
SizeBench
SizeBench 是一个实用工具,可帮助调查和减小编译的本机代码二进制文件(DLL、EXE 和其他 PE 文件)的大小。
其他资源
博客和新闻
通过我们的性能专家撰写的开发人员博客了解“幕后”信息,帮助自己构建最佳版本的应用。
社区和支持
- 在您的编译-调试-测试循环中遇到性能问题吗? 在 GitHub 上的 Windows 开发性能存储库中上报这些问题。
性能和可持续性
性能工程直接与可持续软件运动交汇。 大多数电网燃烧化石燃料来发电。 当应用程序在电脑上运行时,对于单个用户,它消耗的电量增量可能很小,但会随着用户群的增长而增加。
有兴趣了解性能工程与可持续性之间的关联? 查看 绿色软件工程 原则和Microsoft的 可持续软件博客。
我们的内容路线图
如果没有正确的指导,性能可能会成为开发过程中的一个棘手的部分。 确保应用开发人员可以随时使用正确的文档是创建更高效应用的关键。 下面的路线图详细说明了要添加到此文档集的后续页,并按这些页面的发布顺序进行说明。 如果你看到感兴趣的内容或发现缺少的内容,请通过本页底部的“反馈”链接,在 GitHub 上告知我们! 我们的目标是策划一套可满足你需求的、全面的、具有教育意义的应用程序性能文档集,因此我们很乐意听取你的意见。 欢迎在下方提供有关此页面的反馈,并就你希望看到的 Windows 应用程序性能的内容提供相关建议。
| 主题 | 说明 |
|---|---|
| 性能领域简介 | 说明 CPU、内存、GPU 等上下文中的性能的含义。 |
| 确定要测量的内容 | 根据工作负载、环境和其他因素,某些性能领域可能需要比其他领域更多的关注。 通过本文档了解要测量哪些指标以及何时测量 |
| 性能测试周期 | 逐步完成性能测试生命周期,包括设置测试环境、分析结果和实施产品改进 |
| 了解不同的性能工具 | 本文档将介绍更多性能工具,并介绍使用它们的用例和最佳做法 |
| 案例研究 | 一系列端到端场景及其在性能测试周期中的历程 |