Канонический метод измерения производительности при запуске iOS-приложения?

Меня попросили сократить время запуска приложения для iOS. Я очень хорошо знаком с платформой / инструментами в целом, но раньше я не фокусировался на времени запуска приложений. Мне интересно, есть ли известные способы для решения этой проблемы?

Я понимаю, что могу просто измерить время, необходимое для перехода от main() к завершению application:didFinishLaunchingWithOptions: (который включает в себя любые задачи фоновой загрузки), но, опять же, я надеюсь, что может быть более стандартизированный способ сделать это.

Любые предложения будут ценны!

2 ответа

С сессии WWDC 2012 235

установить начальную точку в первой строке кода в main.m

#import <UIKit/UIKit.h>

CFAbsoluteTime StartTime;

int main(int argc, char *argv[])
{
    StartTime = CFAbsoluteTimeGetCurrent();

    @autoreleasepool {
        ...

установить конечную точку где-то в AppDelegate"s application:didFinishLaunchingWithOptions:

extern CFAbsoluteTime StartTime;
 ...
dispatch_async(dispatch_get_main_queue(), ^{
    NSLog(@"Launched in %f sec", CFAbsoluteTimeGetCurrent() - StartTime);
});

Ваш метод звучит как правильный (я рекомендую использовать CFAbsoluteTime для ваших измерений).

Одна вещь, которая может помочь вам сократить время запуска, - это избегать загрузки View Controllers из перьев при запуске приложения. Если я не ошибаюсь, это заставляет их загружаться в память даже до запуска вашего приложения. Вместо этого динамически выделяйте и запускайте ваши контроллеры представления, когда они вам нужны. Обратите внимание, что у вас все еще могут быть представления, которые вы хотите загрузить с помощью контроллеров представления, хранящихся в Nibs, вам не нужно прекращать использовать IB. Только не используйте IB для установки статических выходов для вашего делегата приложения.

Другие вопросы по тегам