Iphone Cocos2d+;Box2d性能ARMv6与ARMv7

Iphone Cocos2d+;Box2d性能ARMv6与ARMv7,iphone,cocos2d-iphone,box2d,armv7,armv6,Iphone,Cocos2d Iphone,Box2d,Armv7,Armv6,我正在开发一个非常密集地使用box2d物理的游戏,我的beta测试人员报告说,当屏幕上有很多对象时,游戏的性能很差。我几乎总是挂在应用程序的调试版本上,并且一直保持稳定的60 fps。在摆弄了几乎所有的构建设置之后,我注意到在调试构建模式下,一个标志只有活动的\u ARCH是YES,而在发行版中它是NO。在仅为ARMv6构建发布版本并将其安装到支持ARMv7的设备上之后,我们获得了稳定的60 fps。尝试为ARMv7(Thumb)构建时,性能再次变得马虎(差30-50%)。在非物理模拟环境中也有

我正在开发一个非常密集地使用box2d物理的游戏,我的beta测试人员报告说,当屏幕上有很多对象时,游戏的性能很差。我几乎总是挂在应用程序的调试版本上,并且一直保持稳定的60 fps。在摆弄了几乎所有的构建设置之后,我注意到在调试构建模式下,一个标志
只有活动的\u ARCH
YES
,而在发行版中它是
NO
。在仅为ARMv6构建发布版本并将其安装到支持ARMv7的设备上之后,我们获得了稳定的60 fps。尝试为ARMv7(Thumb)构建时,性能再次变得马虎(差30-50%)。在非物理模拟环境中也有轻微的性能下降。测试设备包括iPodtouch4、iPhone4和iPhone3GS。你能谈谈你对为什么会这样的看法吗?我不知道:)

首先:总是只在发布版本中测量性能。调试构建包括断言、日志记录以及其他可能影响性能结果的事情,通常情况下会更糟

如果我没弄错的话,你是说ARMv6代码在所有设备上都运行平稳(60 fps),而为启用Thumb指令的ARMv7构建时,性能会“马虎”。我认为“30-50%更糟”意味着在所有提到的3台设备上,ARMv7代码的速度大约为30-45 fps。听起来你还没有类似的测试场景,即游戏开始时在相同位置有相同数量的对象,以便能够准确地比较设备之间的性能。如果通过玩游戏手动再现“很多对象”场景,则很难评估实际性能差异

由于您已经启用了ARMv7和thumb指令,因此您确实应该获得良好的性能,尤其是在第四代设备上。您可能希望尝试禁用拇指并重新测试。您还应该检查发布版本的优化级别,它应该是:最快、最小。通常,检查生成设置中是否存在仅影响ARMv6或ARMv7的条目(这些条目用箭头标记以展开它们)

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

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

<renderMode>gpu</renderMode>
gpu

我在星系s2上测试了这个。到目前为止,我还不知道这对其他设备有何影响…

谢谢。。。如果游戏在调试中以每秒60帧的速度运行,那么它在发行版中应该运行相同或更快,这就是为什么我没有在发行版中进行测试的原因。事实上,我确切地知道我在任何给定点绘制/模拟了多少对象。我尝试过使用完全相同的构建设置(包括最快、最小的)构建游戏,除了ARMv6/ARMv7(Thumb),用于调试和发布。不过,当我使用ARMv6构建它时,它运行得更快,我看不出任何明显的原因。但是你是对的,当我完成这个项目后,我会做一个测试,并进一步讨论这个问题。通常发布版本的运行速度至少与调试版本的运行速度相同或更快。但是偶尔会有一种奇怪的情况,使得只在发布版本中测试性能是值得的。毕竟,这是你的用户将要玩的东西。