1

我正在开发一款非常密集地使用 box2d 物理的​​游戏,当屏幕上有很多对象时,我的 beta 测试人员报告说性能马虎。我几乎总是挂在应用程序的调试版本上,并且一直保持相当稳定的 60 fps。在摆弄了几乎所有的构建设置之后,我注意到在 DEBUG 构建模式下,一个标志ONLY_ACTIVE_ARCHYES,而在 RELEASE 它是NO. 在仅为 ARMv6 构建 RELEASE 版本并将其安装在支持 ARMv7 的设备上之后,我们获得了稳定的 60 fps。尝试为 ARMv7 (Thumb) 构建再次给出了草率(30 - 50% 更差)的性能。在非物理模拟环境中也有轻微的性能影响。测试设备为 iPod Touch 4、iPhone 4 和 iPhone 3GS。你能分享你对为什么会这样的看法吗?我不知道 :)

4

2 回答 2

2

我注意到了同样的问题。经过一些测试后,我发现如果设置以下渲染模式,性能会变得更好:

<renderMode>gpu</renderMode>

我在galaxy s2上测试了这个。直到现在我都不知道对其他设备的影响如何......

于 2012-03-18T10:08:43.627 回答
0

首先:始终只在发布版本中衡量性能。调试版本包括断言、日志记录和可能会影响性能结果的其他可能内容,通常会变得更糟。

如果我猜对了,您的意思是 ARMv6 代码在所有设备上运行流畅(60 fps),而为 ARMv7 构建启用 Thumb 指令会给您“草率”的性能。我认为“30-50% 更差”意味着 ARMv7 代码在所有 3 个提到的设备上大约 30-45 fps。听起来您也没有可比的测试场景,即游戏从相同位置的相同数量的对象开始,以便能够准确地比较设备之间的性能。如果您通过玩游戏手动重现“大量对象”场景,则很难评估真正的性能差异。

由于您已经启用了 ARMv7 和 thumb 指令,因此您确实应该获得良好的性能,尤其是在第 4 代设备上。您可能想尝试禁用拇指并重新测试。您还应该检查发布版本的优化级别,它应该是:最快、最小。一般来说,检查您的构建设置是否有任何仅影响 ARMv6 或 ARMv7 的条目(此类条目标有箭头以展开它们)。

您还应该验证您的性能问题实际上与物理有关。“很多对象”意味着屏幕上还有“很多精灵”。如果它们不是 sprite-batch,性能会下降得更快。如果它们也是部分透明、旋转或缩放的,那么没有 spritebatching 的性能会更差。

于 2011-10-06T09:08:02.593 回答