我正在开发一款使用box2d物理的游戏,并且我的beta测试人员在屏幕上出现大量对象时报告了马虎的表现。我几乎总是挂着应用程序的DEBUG版本,并且一直保持稳定的60 fps。经过几乎所有的构建设置摆弄之后,我注意到在DEBUG构建模式下,一个标记ONLY_ACTIVE_ARCH
是YES
,而在RELEASE中是NO
。在仅为ARMv6构建RELEASE版本并将其安装在支持ARMv7的设备上后,我们获得了稳定的60 fps。试图构建ARMv7(Thumb)会再次表现出sl((30-50%)的性能。在非物理模拟环境中也可以看到轻微的性能损失。测试设备是iPod Touch 4,iPhone 4和iPhone 3GS。你能分享你的意见,为什么可能是这样吗?我不知道:)Cocos2d + Box2d性能ARMv6 vs ARMv7
1
A
回答
0
首先:始终只在发布版本中衡量性能。调试版本包括断言,日志记录以及可能会影响性能结果的其他因素,通常情况更糟。
如果我明白了这一点,您会说所有设备上的ARMv6代码运行平滑(60 fps),而启用Thumb指令的ARMv7版本则为您提供了“马虎”式的性能。我认为“30-50%更差”意味着在所有3个提到的设备上,对于ARMv7代码,大约30-45 fps。这听起来似乎没有可比较的测试场景,即游戏从相同位置处的相同数量的对象开始,以便能够准确地比较设备之间的性能。如果您通过玩游戏手动重现“大量物体”场景,则很难评估真实的性能差异。
由于您已经启用了ARMv7和拇指指令,因此您应该获得良好性能,特别是在第4代设备上。您可能想尝试禁用拇指并重新测试。您还应该检查发布版本的优化级别,它应该是:最快,最小。一般来说,检查任何只影响ARMv6或ARMv7的条目的构建设置(这些条目标有箭头以展开它们)。
您还应该验证您的性能问题实际上与物理有关。 “很多对象”意味着屏幕上还有“很多精灵”。如果它们不是精灵批处理,则性能可以下降得更快。如果它们也是部分透明,旋转或缩放的,那么没有精细划分的性能会更差。
2
我注意到了同样的问题。 一些测试后,我认识到,性能得到更好的,如果我设置如下rendermode:
<renderMode>gpu</renderMode>
我测试了这对星系S2。到目前为止,我不知道如何影响其他设备...
相关问题
- 1. iOS:Xcode:架构:armv7 vs armv6
- 2. UIRequiredDeviceCapabilities armv6和armv7
- 3. armv6和armv7
- 4. $(ARCHS_STANDARD_32_BIT)与armv6,armv7/armv7s与i386
- 5. 对于iOS(armv6和armv7)ffmpeg
- 6. Xcode 4 Final - “armv6 armv7”问题与armv6库链接时
- 7. 为ARMv6,ARMv7和i386架构构建f2c
- 8. 支持的ARMv6和ARMv7在同一IPA
- 9. 修改二进制的ARMv7库的ARMv6
- 10. 只有armv7没有armv6选项
- 11. 边缘 - Cocos2d/Box2D
- 12. Cocos2D Box2D错误?
- 13. Box2D Cocos2d JS
- 14. Cocos2d或Box2d?
- 15. cocos2d + box2d:向点
- 16. EXC_BAD_ACCESS cocos2d - box2d
- 17. cocos2d/box2d麻烦
- 18. 炸弹 - Cocos2d/Box2d
- 19. 线性脉冲 - Cocos2d/Objective-C/Box2d
- 20. Cocos2d v3中的Box2d
- 21. 重置Sprite - Box2d(Cocos2d)
- 22. 绳索在cocos2d&box2d
- 23. Cocos2D + Box2D编辑器?
- 24. 功率计 - Cocos2d/Box2d
- 25. CCNode/CCSprite/Box2D内存性能问题(cocos2d,iphone)
- 26. 屏幕坐标为ARMv6,ARMv7的(IPhone开发)
- 27. Box2d接触传感器COCOS2D
- 28. Box2d与cocos2d的联合
- 29. 如何从Cocos2D Box2D开始?
- 30. cocos2d和box2d:相机旋转
谢谢......如果游戏在DEBUG中以60 fps的常量工作,它应该在RELEASE中运行相同或更快的权利,这就是为什么我没有在发布中不做测试。实际上我确切知道在任何给定的点上我绘制/模拟了多少物体。我已经尝试用除了ARMv6/ARMv7(Thumb)以外的完全相同的构建设置(最快,最小包括)来构建游戏,DEBUG和RELEASE。当我使用ARMv6构建它时,它的运行速度仍然很快,但我没有看到明显的原因。但是你是对的,当我完成这个项目并扩展这个问题时,我会做一个测试。 –
通常,发布版本的运行速度至少与调试版本一样快或更快。但偶尔会有一些奇怪的情况使得仅在发布版本中测试性能值得。毕竟,这就是你的用户将会玩的东西。 – LearnCocos2D