Профилирование времени iOS: забавно, как время ускользает

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

Когда я запускаю профилировщик и фокусируюсь только на интервале времени во время инициализации контроллера представления и отображения на экране, я вижу это:

введите здесь описание изображения

Очевидно, что задержка в 500 мс в основном потоке — это нехорошо. Но куда ушло время? Почему дерево вызовов увеличивается со 100% до 15%?

Как я могу получить от Instruments дополнительную информацию об этих недостающих 85%?

(Для получения этого результата в настройках отображения были отмечены «инвертировать дерево вызовов» и «разделить по потокам».)


person bcattle    schedule 11.02.2016    source источник


Ответы (1)


Не хватает 85%. Дерево вызовов не переходит со 100% на 15%. Первый список на вашем скриншоте содержит общее время основного потока, что составляет 100% времени. Листинги после этого расскажут вам, куда уходит время. Первый занимает 15% времени, второй — 3,4%, третий — 2,7% и так далее.

Если вы хотите найти свой код в дереве вызовов, установите флажок «Скрыть системные библиотеки» в настройках отображения. Когда вы скрываете системные библиотеки, первый список должен иметь имя main. Не беспокойтесь об этом списке, так как он похож на список основной темы на скриншоте. Первый листинг после main — это самый медленный путь кода. Двойной щелчок по вашим функциям в дереве вызовов показывает строки кода, которые занимают больше всего времени, что должно помочь вам найти источник задержки в вашем коде. Начните с листинга после main и идите оттуда.

person Mark Szymczyk    schedule 15.02.2016