2011-10-06 56 views
1

我正在开发一款使用box2d物理的游戏,并且我的beta测试人员在屏幕上出现大量对象时报告了马虎的表现。我几乎总是挂着应用程序的DEBUG版本,并且一直保持稳定的60 fps。经过几乎所有的构建设置摆弄之后,我注意到在DEBUG构建模式下,一个标记ONLY_ACTIVE_ARCHYES,而在RELEASE中是NO。在仅为ARMv6构建RELEASE版本并将其安装在支持ARMv7的设备上后,我们获得了稳定的60 fps。试图构建ARMv7(Thumb)会再次表现出sl((30-50%)的性能。在非物理模拟环境中也可以看到轻微的性能损失。测试设备是iPod Touch 4,iPhone 4和iPhone 3GS。你能分享你的意见,为什么可能是这样吗?我不知道:)Cocos2d + Box2d性能ARMv6 vs ARMv7

回答

0

首先:始终只在发布版本中衡量性能。调试版本包括断言,日志记录以及可能会影响性能结果的其他因素,通常情况更糟。

如果我明白了这一点,您会说所有设备上的ARMv6代码运行平滑(60 fps),而启用Thumb指令的ARMv7版本则为您提供了“马虎”式的性能。我认为“30-50%更差”意味着在所有3个提到的设备上,对于ARMv7代码,大约30-45 fps。这听起来似乎没有可比较的测试场景,即游戏从相同位置处的相同数量的对象开始,以便能够准确地比较设备之间的性能。如果您通过玩游戏手动重现“大量物体”场景,则很难评估真实的性能差异。

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

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

+0

谢谢......如果游戏在DEBUG中以60 fps的常量工作,它应该在RELEASE中运行相同或更快的权利,这就是为什么我没有在发布中不做测试。实际上我确切知道在任何给定的点上我绘制/模拟了多少物体。我已经尝试用除了ARMv6/ARMv7(Thumb)以外的完全相同的构建设置(最快,最小包括)来构建游戏,DEBUG和RELEASE。当我使用ARMv6构建它时,它的运行速度仍然很快,但我没有看到明显的原因。但是你是对的,当我完成这个项目并扩展这个问题时,我会做一个测试。 –

+0

通常,发布版本的运行速度至少与调试版本一样快或更快。但偶尔会有一些奇怪的情况使得仅在发布版本中测试性能值得。毕竟,这就是你的用户将会玩的东西。 – LearnCocos2D

2

我注意到了同样的问题。 一些测试后,我认识到,性能得到更好的,如果我设置如下rendermode:

<renderMode>gpu</renderMode> 

我测试了这对星系S2。到目前为止,我不知道如何影响其他设备...