全部文章
性能模拟器故障排除6 分钟

Mac 安卓模拟器的 FPS:帧数怎么测,才不会被一个数字骗了

更新于 · MACOS EMULATOR 团队

你的安卓模拟器每秒跑多少帧?游戏在 Mac 上一卡,这往往是第一个问题,却很少是对的问题。单看一个数字,看不出游戏卡不卡,而 macOS 的「活动监视器」根本不统计画面帧数。下面说明在 MACOS EMULATOR 里怎样真正测出来,以及哪些你可以自己检查。

每秒帧数,说明不了卡不卡

平均每秒 24 帧,可能是 24 帧均匀到达,玩起来毫无问题;也可能是 30 帧和 15 帧来回切换,根本没法玩。在我们记录的一次测量里,44% 的画面间隔 33 毫秒,34% 的间隔超过 46 毫秒:平均值把这两种情况都掩盖了。

真正重要的,是准时到达的画面占多少,以及最差的那次间隔。在一台 8 GB 的 M1 上,模拟器设为 30 Hz 实测:100% 的画面准时到达,最差间隔 38 毫秒。目标帧率取两个上限中较低的那个:一是模拟器的帧率,在启动器的「RENDER」(渲染)卡片上设为 30 或 60 Hz;二是游戏自己的帧率上限,如果游戏有的话。

性能报告:六秒,不用退出游戏

在六秒内,性能报告会统计安卓在游戏图层上实际显示了多少帧,同时记录你的 Mac 在这段时间里的状态。

  1. 1开始一局游戏,先玩几分钟:在菜单里做的报告,说明不了让你难受的问题。
  2. 2点击工具栏上的「Performance」按钮,也就是仪表形状的图标:在「Screen fit」下位于左上角,在窗口模式下位于右侧。
  3. 3继续玩。六秒后,按钮变成绿色的勾:报告已经复制好了。
  4. 4在客户中心点击「发送报告」,把它粘贴到「性能报告」输入框里:它会作为 .txt 附件发出。

请从工具栏做报告,不要从启动器的「Settings」里做:打开设置会把启动器带到前台,游戏窗口被挡到后面,而 macOS 不会绘制完全被遮住的窗口。这时统计到的帧数,就不再代表一局真实的游戏。

复制下来的报告是加密的:你自己读不了,由客服打开。客服能从中看到帧数和它们的均匀程度、Mac 的可用内存和交换空间、发热状态、低电量模式,以及占用最多的应用。之后,在游戏中最吃力的时刻再做两份,能的话在同一个场景:卡顿就是在那时显出来的。

比较两次测量,别骗自己

在同一台机器、同样的条件下,连续五次测量,结果从每秒 20.0 帧到 28.6 帧不等。所以拿一次测量和另一次比,什么也证明不了:如果两个设置之间的差距比这个还小,就没有什么效果需要解释。

  • 同一个场景:两个场景的工作量不同,数字没法比。
  • 同一时段:一次在安卓设备启动三分钟后测到的每秒 15 帧,到了第三十三分钟就没有再出现。
  • 一次只改一处:先在设置不变时做一份报告,改一个设置,再做第二份。
  • 每一边都测几次,比较它们的中位数。
  • 让 Mac 保持空闲:当它的负载超过核心数时,报告会自己把这次测量标为不可比较。

内存或帧率的改动,要等模拟器下次启动才生效:做第二次测量之前,先重启模拟器。

「活动监视器」能告诉你什么,不能告诉你什么

「活动监视器」不统计任何帧数,但它能显示你玩游戏时,是什么在拖累 Mac。

  • 「内存」标签:「内存压力」变成黄色或红色,说明 Mac 内存不够。按内存排序,关掉占用好几 GB 的程序。
  • 「CPU」标签:按「% CPU」排序,就能看到是什么在占用 Mac。单单 Discord 屏幕共享,就吃掉将近一半的处理器。

有两个数字常被看错。某个应用的「% GPU」一栏,并不是显卡的占用率。已使用的交换空间是一个存量,不是速度:macOS 不会主动把写到硬盘上的数据搬回来,所以好几 GB 的交换,可能来自几个小时前打开的某个应用,现在并不造成任何负担。

反过来也一样:当 macOS 压缩内存、而不是写到硬盘上时,交换少并不代表内存够用。一位用 16 GB Mac mini M4 的玩家就栽在压缩上:分给模拟器的内存,只有 7% 还留在物理内存中。Mac mini 跑安卓模拟器的指南 讲了后来的事。

报告里最常见的情况

多数时候,即使游戏在卡,显卡的占用也不到它能力的一半:撑不住的是 Mac 的内存。举个 8 GB Mac 的例子:可用内存只剩 1.5 GB,4.2 GB 已被换到硬盘上,而游戏引擎依然保持了 100% 的目标帧率。其次是 macOS 的低电量模式,以及分给模拟器的内存太多:安卓模拟器太慢时的设置指南 会逐一讲到,附实测数据。

随报告一起发送的内容

  • 启动器的日志(「Settings」>「Logs」>「Copy」),粘贴到同一个按钮的第二个输入框里。
  • 你的配置:机型、芯片、内存和 macOS 版本,打开苹果菜单,选择「关于本机」就能看到。
  • 一局用 30 Hz,一局用 60 Hz,并说明在你的 Mac 上哪一个更流畅。

常见问题

怎么查看 Mac 上安卓模拟器的帧数?

工具栏上的「Performance」按钮会测量六秒的游戏过程,不会打断游戏。复制下来的报告是加密的:在客户中心通过「发送报告」发出去,由客服帮你解读。

为什么每秒 30 帧看起来会比 60 帧更流畅?

因为屏幕上看得出来的是均匀。30 帧全部准时到达,就像在 8 GB 的 M1 上以 30 Hz 测到的 100%,胜过 60 帧里有一部分迟到。

「活动监视器」能测模拟器的帧数吗?

不能,它不统计任何帧数。它显示的是内存压力和占用 Mac 的应用,而且它的「% GPU」一栏并不是显卡的占用率。

什么时候做性能报告?

在游戏中、玩了几分钟之后,从工具栏做:不要在菜单里,也不要从「Settings」里做。然后在最吃力的时刻、同一个场景里再做两份。

两次测量结果不一样,正常吗?

正常。同样的条件下,同一台机器连续五次测量,结果从每秒 20.0 帧到 28.6 帧不等。比较时要用同一个场景、同一时段,每一边都测几次。