我正在密切关注我的应用程序在开发中的开始时间。在main
我存储开始时间使用CFAbsoluteTimeGetCurrent()
和记录didFinishLaunchingWithOptions
被调用时的经过时间,以及在我的初始化和绘画期间StopWatchView
,最后在viewDidAppear
主视图控制器中。这对我弄清楚我的开始时间去哪里并保持控制非常有用。我在实际设备上的启动性能测试是在 iPhone 3G (iOS 4.2.1) 和 iPhone 4 上完成的。
自从将设备升级到 iOS 5.1 后,我也被迫将 Xcode 升级到了 4.3.1 版本。我立即注意到 iPhone 4 的启动时间发生了巨大变化。所有测量都是在附加 Xcode 以进行调试的情况下执行的,从控制台中的日志中读取经过的时间。现在我还添加了显示经过时间的调试标签,以便能够在没有附加调试器的情况下进行测量。
为了消除更改是由我的代码中的某些内容引起的可能性,我创建了新的实用程序应用程序并确认了减速。iPhone 4 过去比 iPhone 3G 快约 3 倍,现在它比 3G 慢(!!!)。启动时间也变得非常不稳定(+- 0.3s),过去是+-0.05s。在飞行模式下波动消失了,所以我怀疑它是由一些与 iCloud 相关的后台进程引起的。然而,我对升级前后 iPhone 4 的启动时间慢了 3 倍感到非常困惑。
以下是平均启动时间,首先是在 Xcode 中调试(然后没有 Xcode):
Debug No-debug
iPhone 3G: 1.23s (0.67s)
iPhone 4: 0.43s (-----) [iOS 5.0.1, Xcode 4.3]
iPhone 4: 1.53s (1.18s) [iOS 5.1, Xcode 4.3.1]
iPad 2: 0.41s (0.22s) [iOS 5.1, Xcode 4.3.1]
我不知道这是由 iOS 5.1 或 Xcode 4.3.1 引起的,还是 iPhone 4 特有的问题。有没有人看到类似的放缓?