性能分析和调优是一项复杂的任务,感觉更像是一门艺术,而不是一门科学。游戏中需要完美同步的众多运动部件,再加上特定场景的复杂性,可能会导致难以理解和隔离问题。在 ChromeOS 上,许多工具都是根据 ARM 芯片组设计的。以下是一些有助于加快此流程的提示。
在专门针对 ChromeOS 优化游戏性能时,请务必注意,底层性能问题在所有设备上都是相同的,因此改进将有助于提高所有用户的性能和电池续航时间。ChromeOS 倾向于使用更大的显示屏和桌面输入设备,因此可能更容易发现某些问题。例如,低效的纹理加载算法可能在高端移动设备上“运行良好”,但在配备 4K 显示屏的 Chromebook 上却无法跟上。改进算法将有助于提升游戏在所有设备上的表现。
如果您是分析新手,建议采用以下常规方法:
- 确定性能是否受以下因素限制:
- CPU
- GPU
- 其他:输入/磁盘/网络
- 尝试找出主要原因
- 尝试优化
- 重复
在大多数情况下,游戏会显示自身是“受 CPU 限制”还是“受 GPU 限制”。使用以下性能分析提示和工具,尝试确定系统在每一帧中“花费时间”的位置。例如,如果 GPU 在开始渲染之前需要花费很长时间来计算和加载顶点,则您的游戏可能受 CPU 限制。相反,如果您使用的是大量基于 GPU 的详细滤镜,则游戏很可能受 GPU 限制。请注意,许多手机和 ChromeOS 设备没有独立显卡。如果桌面游戏假设 GPU 滤镜速度很快,可能会发现集成 GPU 渲染每个场景的时间过长。
如需详细了解如何进行性能分析,请参阅 ARM 的“优化流程”指南。
工具
虽然您当然可以自行确定瓶颈,但借助合适的工具,您可以更轻松地分析游戏的性能,并确信自己正专注于正确的事情。市面上有许多工具,但以下是我们常用的程序。
Android Studio 性能分析器
如需开始分析任何 Android 应用,最简单的方法是使用集成的 Android Studio 分析器。在 Android Studio 中,只需选择“Profile”而非点击“Run”,即可运行应用并实时了解 CPU、内存和网络使用情况。简单的 CPU 轨迹可以帮助您快速隔离要查看的代码区域。
此工具无法提供有关 GPU 使用情况的真实深入分析,也无法提供有关每个帧同步之间发生的情况的真实深入分析,因此虽然是工具箱中不错的工具,但可能不足以让游戏以最佳性能运行。
Snapdragon Profiler
由于游戏在不同设备上的行为方式相同,因此获取详细性能信息的一种好方法是在基于 Qualcomm 的 ARM 手机上使用 Snapdragon Profiler。虽然无法直接在 ChromeOS 设备上进行分析,但此工具应能提供有关游戏在每帧中花费最多时间的位置的信息,并让您深入了解具体使用了哪些 GPU 调用。
例如,如果您发现各向异性 GPU 过滤器的耗时很长,并且在每帧完成的工作中占主导地位,那么更改此设置可能会大幅提升性能。
如果您发现 GPU 时间较短且规律,但 CPU 时间过长,导致您错过帧同步,请查看纹理加载/帧准备算法。
如需了解详情,请参阅官方使用情况文档。
ARM Mobile Studio
另一个实用的 ARM 设备分析器是 ARM Mobile Studio。有些开发者可能更喜欢它,但它的使用方式与 Snapdragon Profiler 类似。请参阅官方使用文档。
Android GPU 检查器
Android GPU 检查器是 Google 开发的一款新工具,专门用于帮助您通过 OpenGL 和 Vulkan 充分发挥游戏的性能。此功能目前处于开发者预览状态,可能需要进行一些设置工作,并且目前仅适用于少数设备。它有望成为未来用于图形分析的主要工具之一。请参阅官方文档。
ARC 概览跟踪
还有一种更通用的工具 - ARC 概览跟踪,其工作方式与上述 ARC 图形跟踪工具类似。此跟踪器将提供有关应用和 ChromeOS 性能的总体指标。读出结果将显示应用和 Chrome 本身的 FPS,以及 CPU 使用率、GPU 使用率、功耗等。您可以多次运行该工具,并查看每次运行的图表,这些图表会叠加在一起,并以颜色区分。每个轨迹模型都将保存到“下载内容”文件夹中,并且可以重新导入以供日后比较。对于常规应用健康检查,ARC 概览轨迹是一个不错的起点。
在 ChromeOS 的浏览器中访问 chrome://arc-overview-tracing 即可使用此工具。
后续步骤
因此,您可能已经发现了一些瓶颈,但不确定该如何解决。或者,您已发现并解决了这些问题,但不确定接下来该怎么做。下面,我们为您整理了一份包含一般 Android 提示和引擎专用提示的资源列表。
常规提示
Android 开发者门户提供了一些有助于提升应用性能的实用技巧。您可以在其中找到有关加载时间注意事项、如何利用多线程、处理输入延迟等方面的详细信息。
请务必尽早进行分析,并经常进行分析,尤其是在您以性能较低的机器为目标平台或突破高端架构的界限时。跟踪应用的性能统计信息有助于您确定哪些更改导致帧速率下降,以及哪些更改有助于您实现流畅的用户体验。
Unity 引擎
除了常规的 Android 文档之外,Unity 还提供了 Chrome OS 专用文档,可帮助您使用其引擎创建高性能的 ChromeOS 应用。请查看其 ChromeOS 文档,了解入门、输入、调试和构建,其中包括如何创建 x86 build。如需了解有关性能的内容,请参阅了解优化以及有关性能和优化的课程。
不妨阅读 ARM 的分析和优化 Unity 游戏指南及其相关最佳实践。本教程将引导您使用 Streamline 工具(ARM Mobile Studio 的一个方面)在 Unity 中对示例游戏进行性能分析。
Unreal Engine
Unreal 编写了自己的性能指南和提示和技巧文档,可帮助您了解如何充分利用引擎提供的许多选项和设置。在这里,您会找到有关细节层次的技巧、如何充分利用光照、有关材质质量设置和着色器的分步指南,以及其他建议。
如需了解更多基于图形的优化,ARM 编写了一份指南,介绍了如何优化移动游戏。您可以在此处找到常规优化提示以及 Unreal 特定的图形注意事项。