UIKit Как зафиксировать время, необходимое для рендеринга первого кадраIOS

Программируем под IOS
Ответить
Anonymous
 UIKit Как зафиксировать время, необходимое для рендеринга первого кадра

Сообщение Anonymous »

Я реализую телеметрию для нашего приложения. Одна из вещей, которую я пытаюсь уловить, — это отдельные блоки времени, как описано инженерами Apple в видеоролике «Оптимизация запуска приложения» на WWDC 2019. У меня тяжелые времена. точно фиксируя время для первого кадра и расширенных этапов.
Я пытаюсь зафиксировать их, как показано во фрагменте ниже, и использую указатели для обозначения точек регистрации (с каждый журнал..Начало и журнал...Завершено. Я делаю следующее предположение:
  • Что приложение: DidFinishLaunchingWithOptions: метод вызывается перед отрисовкой первого кадра (как описано в видео).
  • Рендеринг первого кадра будет завершен после завершения текущего цикла выполнения.

Код: Выделить всё

void PerformWhenIdle(dispatch_block_t block) {
CFRunLoopObserverCreateWithHandler(kCFAllocatorDefault,
kCFRunLoopAfterWaiting,
NO,
0, ^(CFRunLoopObserverRef observer, CFRunLoopActivity activity) {
block();
});
}

// ----------------------------
// AppDelegate.m
- (BOOL)application:(UIApplication *)app didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[logger logFirstFrameRenderingStarted];
PerformWhenIdle(^{
[logger logFirstFrameRenderingFinished];
[logger logExtendedStageStarted];
});
}

// ----------------------------
// in TableVC.m
- (void)viewDidAppear {
[self.tableView reloadData];
PerformWhenIdle(^{
[logger logExtendedStageFinished];
});
}
Кажется, что отправная точка первого кадра находится довольно близко, когда я проверяю указатели в инструментах, однако первый кадр кажется совсем не таким, и поэтому расширенный этап кажется очень коротким по сравнению с ним, где указатель указывает продолжительность 225,23 мс, инструмент жизненного цикла приложения показывает, что это заняло 1,78 мс:
[img]https://i.sstatic. net/3KpYSRrl.png[/img]

Хотелось бы знать

Мои предположения неверны? если да, значит ли это, что инструмент неправильный?
[*]Если они неправильные, как мне лучше всего зафиксировать начальную и конечную точки первого визуализируемого кадра?


Подробнее здесь: https://stackoverflow.com/questions/784 ... irst-frame
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»