# 在调整之前测量玩家可见的问题

> 为浏览器游戏构建可重复的性能测试，将帧症状与原因分开，并比较匹配场景的变化。

- URL: https://oneshotgems.ai/zh-Hans/topics/measuring-game-performance
- 类别: 游戏开发者指南
- 类型: 指南
- 更新日期: 2026年10月5日

帧速率数字可以隐藏游戏速度缓慢的原因。输入可能会因较长的主线程任务而延迟，渲染可能会很昂贵，或者场景可能仅在解码新资源时出现故障。有用的测量从玩家可见的特定症状和产生该症状的可重复动作开始。捕获基线，改变一个可能的原因，并在可比较的条件下重复相同的操作，然后再将更改称为改进。

## 制作一个小的可重复基准

选择一个场景并编写一条通过该场景的路线：例如，重新启动关卡，穿过固定的障碍物序列，然后触发拥挤的效果区域。保持浏览器、窗口大小、资产状态和场景内容一致。记录动画回调之间的时间间隔以及更新和渲染函数所花费的时间，同时使用浏览器开发人员工具检查长任务和渲染活动。

比较分布或重复样本而不是单个最佳帧。请注意问题是否发生在初始加载、稳定播放或过渡期间。简短的诊断覆盖可以在您玩游戏时显示最近的帧间隔，但在比较期间删除或禁用大量日志记录，因为测量代码本身会增加工作量。

## 使用浏览器计时作为证据，而不是判决

Performance.now() 为本地测量提供高分辨率时间戳，PerformanceObserver 可以报告支持的性能条目。在依赖可选条目类型之前检查 supportedEntryTypes；例如，长任务报告并非在每个浏览器中都可用。检测到的长任务指向主线程阻塞，但它没有解释哪一行代码或产品行为导致了它。

更改后，如果可能，请在多个代表性设备上重复相同的场景，然后手动验证控制响应和视觉稳定性。记录简明的结果，例如场景、浏览器、样本计数和症状变化。避免发布来自一台机器的普遍适用的帧速率说法；性能取决于硬件、浏览器、显示和竞争工作。

## 常见问题

**平均FPS足以评价一款游戏吗？** 不会。平均值可以掩盖玩家注意到的偶尔的停顿。检查帧时间变化并将其与特定的交互或输入延迟症状配对。

**PerformanceObserver 可以识别每一个减速情况吗？** 不。它报告支持的性能条目，而不是渲染成本的完整解释。将其与浏览器分析器和可重现的游戏场景一起使用。

## 跟随好奇心探索

- [查找画布渲染瓶颈](https://oneshotgems.ai/zh-Hans/topics/canvas-game-performance): 使用可重复的场景分析 2D Canvas 游戏，测量耗时分布后再减少高成本的绘制工作。
- [追踪浏览器游戏中的内存泄漏](https://oneshotgems.ai/zh-Hans/topics/game-memory-leaks): 使用可重复的游戏和清理检查来查找保留的游戏场景、侦听器、计时器和随时间累积的资产。

## 延伸阅读

- [MDN：性能 API](https://developer.mozilla.org/en-US/docs/Web/API/Performance_API)
- [MDN：性能观察者](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserver)

---
规范页面: https://oneshotgems.ai/zh-Hans/topics/measuring-game-performance
