升级到 XCode 4.3 后 FPS 下降

Posted

技术标签:

【中文标题】升级到 XCode 4.3 后 FPS 下降【英文标题】:FPS Drop after upgrading to XCode 4.3 【发布时间】:2012-04-25 17:33:24 【问题描述】:

我希望其他人经历过这种情况并随后找到解决方案,因为我正沮丧地点燃自己的头发。

简单地说,我正在使用 XCode 3.2.6 和 SDK 4.2 创建一个 Cocos2D 应用程序。我使用了两台设备进行测试:iPhone 3GS 和 iPhone 4,我相信都是 ios 4.2。在任一设备上进行测试时,我都获得了稳定的 60 FPS 性能。

当我升级到 XCode 4.2 时,灾难首先发生。我可以毫不费力地将我的项目直接打开到这个新版本中并运行它。一切都一样,除了我现在在 XCode 4.2 中。令我震惊和恐惧的是,我发现我现在的 FPS 在 45 到 50 范围内,有时会下降到 30 年代,以前从未发生过这种情况。

此时我决定升级到 Lion、XCode 4.3 和 SDK 5.1。不幸的是,这并没有改变。

然后我将两部手机都升级到了最新的 IOS,但性能问题仍然存在。

最后,我升级到了最新版本的Cocos2D,但还是没有用。

我尝试了许多补救措施,涉及发布与调试模式、编译器设置等。没有任何帮助。

我发现了一些可能是暗示的东西,但目前我对 Open GL ES 的了解还不够,因此无法理解。在另一个论坛上,有人抱怨同样的问题,并说如果他们禁用顶点缓冲区对象 (VBO) 支持,问题就解决了。我发现在 Cocos2D 中启用了它,禁用了它,令我惊讶的是,我恢复到了 60 FPS。该应用程序的性能不如在 XCode 3.2.6 下编译时那样强大,但在 XCode 4.3 下禁用 VBO 支持时性能要好得多。这样做的问题是不建议禁用 VBO 支持,因为它会在启用时提高性能。

我所做的一些测试似乎表明图形是问题所在。当应用程序确实下降到 45 FPS 范围时,我所拥有的只是 12 到 20 个精灵在屏幕上移动。如果我删除这些精灵并让其他一切继续运行,我会回到 60 FPS,即使启用了 VBO。当我在 XCode 3.2.6 下开发时,我有时会有 100 多个精灵在移动(无论是在视野中还是在视野外),并且 FPS 保持在 60。

所以简而言之(抱歉,为时已晚),有没有人知道完全相同的代码在通过 XCode 3.2.6 编译时如何运行得很好,但在 XCode 4.3 下却很糟糕?我尝试了许多不同的编译器设置都无济于事。我的猜测是某处有一些简单的设置可能默认为 XCode 3 和 XCode 4 之间的不同值。

我很绝望,所以请把你可能有的任何想法传递给我。

谢谢!

【问题讨论】:

【参考方案1】:

您是否可以让 Xcode 更新您的项目设置?您是否回滚到 Xcode 4.3 发布之前的已知良好版本并验证它很慢?

【讨论】:

升级到 XCode 4.2 后,我打开了我现有的项目。我记得 XCode 想要验证我的设置,我允许它这样做。如果在此过程中发生了变化,我无法说出具体是什么。你能澄清你的第二个问题吗?当你说“回滚到一个已知的好版本”时,你指的是我的项目的一个版本,还是 XCode 的一个版本?我的项目在升级到 XCode 4.2 后才开始缓慢运行。这是唯一的变化,除了我最初在 XCode 4.2 中打开项目设置后发生的任何变化。 您指的是 Xcode 的提示“验证设置”,如果您允许它确实会进行更改。我的意思是,您应该回到 Xcode 4.2 发布之前的应用程序的早期版本,看看它是否在不进行任何更改的情况下出现这些问题。 我抓了几个月前的一个版本。我在 Xcode 4 中打开它,但这次它没有询问我有关验证设置的任何内容。不知道为什么和上次一样。简而言之,存在同样的问题。运行速度比在 Xcode 3 下慢得多。如果我禁用 VBO 支持,性能会好得多。这么奇怪。如果您有任何其他想法,请告诉我。感谢您的帮助。

以上是关于升级到 XCode 4.3 后 FPS 下降的主要内容,如果未能解决你的问题,请参考以下文章

XCode 4.3 - 从 XCode 4.2 升级后 perl 找不到 C 编译器

升级到 Xcode 4 和 iOS 4.3 后的 iPhone JSON 错误

XCode 4.3 找不到要运行的构建应用程序

Xcode 4.3 没有正确链接到 ZbarSDK

从 xcode3.2 升级到 xcode4.3.2 后的 Builderror

如何在 Xcode 4.2 中包含低于 4.3 的 iOS SDK