【问题标题】:Cocos2d + Box2d performance ARMv6 vs ARMv7Cocos2d + Box2d 性能 ARMv6 与 ARMv7
【发布时间】:2011-10-06 07:49:08
【问题描述】:

我正在开发一款非常密集地使用 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。你能分享你对为什么会这样的看法吗?我不知道:)

【问题讨论】:

    标签: iphone cocos2d-iphone box2d armv7 armv6


    【解决方案1】:

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

    <renderMode>gpu</renderMode>
    

    我在 Galaxy s2 上对此进行了测试。直到现在我都不知道对其他设备的影响如何......

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

      • 谢谢...如果游戏在 DEBUG 中以 60 fps 恒定运行,它应该在 RELEASE 中运行相同或更快,这就是我没有在发布中测试的原因。我实际上确切地知道在任何给定点我绘制/模拟了多少对象。除了 ARMv6 / ARMv7 (Thumb),我尝试使用完全相同的构建设置(包括最快的,最小的)构建游戏,用于调试和发布。当我使用 ARMv6 构建它时,它仍然运行得更快,但我没有看到任何明显的原因。但你是对的,当我完成这个项目并扩展问题时,我会做一个测试。
      • 正常发布版本的运行速度至少与调试版本一样快或更快。但是偶尔会出现一些奇怪的情况,这使得只在发布版本中测试性能是值得的。毕竟,这就是您的用户将玩的东西。
      猜你喜欢
      • 2012-01-09
      • 1970-01-01
      • 1970-01-01
      • 2012-08-01
      • 2011-07-16
      • 2011-08-01
      • 2012-03-24
      • 1970-01-01
      相关资源
      最近更新 更多