Я внимательно слежу за временем запуска моего приложения в разработке. В 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 раньше был в 3 раза быстрее, чем iPhone 3G, теперь он запускается медленнее (!!!), чем 3G. Время запуска также стало очень изменчивым (+ - 0,3 с), где оно было + -0,05 с. Волатильность исчезает в режиме полета, поэтому я подозреваю, что это вызвано некоторым фоновым процессом, связанным с iCloud. Однако я очень озадачен 3-кратным замедлением запуска iPhone 4 до и после обновления.
Вот среднее время запуска, сначала во время отладки в 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. Кто-нибудь видит подобное замедление?