Статьи

iOS SDK: профилирование времени с помощью инструментов

Инструменты — это отличный инструмент от Apple, позволяющий разработчикам оттачивать свои приложения для достижения максимальной производительности. Несмотря на невероятную полезность, многие разработчики избегают приложения, опасаясь незнания всех его возможностей. Сегодня у меня есть несколько быстрых советов, которые вы можете использовать в некоторых очень простых случаях использования инструментов. Давайте погрузимся в!


При навигации по вашему приложению вы можете заметить некоторые задержки, которые вы хотели бы сократить, чтобы обеспечить максимальное удобство для пользователя. Если вы хотите выяснить, где ОС тратит время, когда вы используете приложение, тогда Time Profiler для вас. Профилировщик времени — это место, где большинство разработчиков получают максимальную отдачу от инструментов, поэтому мы сосредоточим наши советы на этом инструменте, хотя многие из них применимы и к другим инструментам. Для начала, вы откроете инструменты и получите следующее меню:

Экран открытия инструментов

Как вы можете догадаться, мы собираемся выбрать Time Profiler. Для этого, чтобы дать вам ценную обратную связь, вы должны запустить приложение на своем устройстве. Запустив ваше приложение, вы должны нажать на поле с надписью «Все процессы» в правом верхнем углу. Затем выберите конкретное приложение, которое вы хотите Time Profile.

Выберите цель

После этого мы можем начать тестирование профиля времени нажатием кнопки записи. Это запустит приложение на телефоне, и вы начнете профилирование времени. Нажмите на ваше приложение и используйте его, вы увидите растущий стек классов, символов и адресов памяти. Вроде сложно делать головы или хвосты, да? Давайте сделаем эти данные немного более понятными.


Вы захотите изменить некоторые настройки «дерева вызовов» в левой части инструментов. Это сделает инструменты более понятными для чтения.

настройки

Сначала вы должны отключить инвертирование дерева вызовов, а затем попросить показать только цель C. Для большинства проектов это будет наиболее продуктивный просмотр ваших данных. После этого Instruments представит вам нисходящий обзор различных операций, происходящих в вашем приложении, а также процент времени, потраченного на обработку каждого процесса. Если вы хотите ускорить ваше приложение, вы можете следить за высокими процентными оценками вплоть до ваших конкретных классов. В моем тесте я вижу, что большая часть моего времени тратится в моем методе SignatureViewCell touchesMoved: withEvent :. Если бы я хотел найти места для оптимизации, это было бы лучшим местом для поиска. Двойной щелчок по строке приведет вас даже к конкретному коду, на который она ссылается:

Call Tree
Time Profiler Percentages

Итак, теперь мы знаем, как посмотреть отчеты Time Profiler и извлечь из них уроки. Но как нам лучше понять, когда во время нашего теста происходят определенные операции? Итак, Instruments позволяет вам «помечать», когда вы нажимаете на устройстве, чтобы пометить, когда вы выполняли определенные действия.


Поскольку вы используете свое приложение и Time Profiler ведет запись, вы можете удерживать опцию и нажимать на галочки чуть выше временной шкалы. Это добавит пользовательские флаги, где вы можете комментировать действия, которые вы выполняли в тот момент во время записи. Это пригодится, когда вы пытаетесь сосредоточиться на конкретном переходе, анимации или другой операции во время выполнения.

Setting up a user flag

Так что это все замечательно, но как насчет того, чтобы сосредоточиться на небольшом разделе всего этого исполнения. Если бы я хотел сосредоточиться на одной анимации, было бы трудно заставить инструменты сосредоточиться на этом. К счастью, эта функциональность также предоставляется.


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

Time Profiler Time Window Selection