2016-03-10 2 views
2

Как подсчитать время, которое требуется, с момента нажатия кнопки запуска на главном экране до момента активации приложения (например, до метода viewDidAppear первого контроллера представления) ?Измерение времени запуска приложения iOS

Код не должен быть программным, но должен быть надежным.

Аналогично в Android, для этого эффекта можно использовать logcat.

ответ

2

Простая реализация является запуск в приложениях главных в StopWatch, а затем захватить результат времени в ViewDidAppear метода:

public class Application 
{ 
    public static Stopwatch StartUpTimer; 

    static void Main(string[] args) 
    { 
      StartUpTimer = new Stopwatch(); 
      StartUpTimer.Start(); 
      UIApplication.Main(args, null, "AppDelegate"); 
    } 
} 

public class MyUIViewController : UIViewController 
{ 
    public override void ViewDidAppear (bool animated) 
    { 

     Console.WriteLine (Application.StartUpTimer.ElapsedMilliseconds.ToString() + "ms to startup"); 
     base.ViewDidAppear (animated); 
    } 
} 
+0

Вопрос маркированные Objective-C. – rmaddy

0

запустить таймер в willFinishLaunchingWithOptions .....

Остановить таймер в applicationDidBecomeActive, или viewDidAppear из VC, который вы пытаетесь профилировать, и NSLog.

+1

Это не начинает отслеживать время, когда пользователь удаляет значок приложения. – rmaddy

+2

Это единственный способ. @rmaddy – Legolas

+0

Запуск таймера в начале 'main' намного лучше, чем запуск в' willFinishLaunchingWithOptions ... '. Но даже это на самом деле не делает то, что спрашивает OP (чего действительно невозможно сделать). – rmaddy

0

Поскольку вы не можете получить точное время, когда пользователь прикасается к значку приложения на рабочем столе, я предлагаю запустить приложение из другого приложения, чтобы вы могли точно указать время начала своего приложения.

  • Зарегистрировать пользовательскую схему URL в приложении
  • создать вспомогательный-приложение, которое может запустить приложение с помощью URL
  • журнала время, когда помощник приложение запускает приложение (или отправить метку времени к вашему приложение)
  • в приложении войти время, когда запуск делается на соответствующем месте (AppDelegate или главный ViewController)
  • если вы отправили метку запуска из хелпера приложения, вы можете вычислить разницу программно, иначе просто сравните оба раза в консоли
0

Вы можете пойти редактировать схему на Xcode и добавьте переменную окружения (DYLD_PRINT_STATISTICS = 1), как показано на рисунке enter image description here

При запуске приложения детали будут печататься на выходе отладчика, как показано ниже:

Total pre-main time: 481.88 milliseconds (100.0%) 
     dylib loading time: 71.70 milliseconds (14.8%) 
     rebase/binding time: 53.66 milliseconds (11.1%) 
      ObjC setup time: 40.04 milliseconds (8.3%) 
      initializer time: 316.33 milliseconds (65.6%) 
      slowest intializers : 
      libSystem.B.dylib : 16.71 milliseconds (3.4%) 

Для получения более подробной информации, пожалуйста, смотрите video.

0

Мы использовали DYLD_PRINT_STATISTICS для измерения до основной() раз запуска нашего приложения в

enter image description here

Смежные вопросы