Основы Instruments: Time Profiler
Записывайте загрузку CPU, анализируйте деревья вызовов и находите узкие места в коде.
«Основы Instruments: Time Profiler» — бесплатный урок Swift Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Swift Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Swift Academy содержит 4 уроков всего.
Зачем нужны Instruments
Instruments в Xcode — это набор инструментов для анализа производительности. Профилировщик времени показывает, на что расходуется время CPU, помогая находить узкие места.
// Launch: Xcode → Product → Profile (Cmd+I)
// Choose "Time Profiler" template
// Run your app and exercise the slow pathЗапись трассировки
Нажмите кнопку записи в Instruments, выполните действия, которые хотите профилировать, а затем остановите запись.
// 1. Connect device or use simulator
// 2. Launch with Profile (Cmd+I)
// 3. Select Time Profiler
// 4. Record for 5-30 seconds
// 5. Stop and analyzeПредставление дерева вызовов
Дерево вызовов показывает функции, сгруппированные по затраченному времени CPU. Самые ресурсоёмкие цепочки вызовов находятся в верхней части иерархии.
// Call Tree columns:
// Self %: time spent in this function exclusively
// Symbol Name: function or method name
// Expand to see callers/calleesСамая тяжёлая трассировка стека
Панель самой тяжёлой трассировки стека показывает единственную цепочку вызовов с наибольшим числом выборок — часто это лучшее место для начала оптимизации.
// In Time Profiler:
// View → Heaviest Stack Trace
// Pinpoints the exact line consuming the most CPUФильтрация выборок
Включите «Hide System Libraries» и «Invert Call Tree», чтобы сосредоточиться на собственном коде, а не на фреймворках Apple.
// Call Tree options (bottom of Instruments):
// ☑ Invert Call Tree – shows leaf functions first
// ☑ Hide System Libraries – filters out OS internalsПереход к исходному коду
Дважды щёлкните символ в дереве вызовов, чтобы сразу перейти к проблемной строке в Xcode.
// Double-click → opens file in Xcode at the hot line
// Red/orange annotation shows time spent per lineПрофилировщик времени и SwiftUI
В приложениях SwiftUI ищите неожиданные вызовы body — чрезмерные перерисовки отображаются как повторяющиеся записи View.body в дереве вызовов.
// Common SwiftUI hot spots:
// - body called 100+ times per second
// - Equatable not implemented, causing unnecessary diffs
// - Heavy computation in body instead of a modelПроверка главного и фонового потоков
Дорожка потоков в верхней части показывает активность каждого потока. Всплески загрузки CPU в фоновых потоках могут указывать на чрезмерную работу за пределами главного потока.
// Thread lanes: Main Thread, Thread 2, Thread 3...
// Select a thread to see its call tree in isolationПрофилирование запуска с помощью профилировщика времени
Измерьте время запуска приложения, начав профилирование при запуске и изучив первые секунды трассировки.
// Instruments → File → Launch Profile
// Measures time from process start to first frame renderУстановка базового показателя
Перед оптимизацией запишите базовую трассировку. После внесения изменений повторите профилирование и сравните результаты, чтобы подтвердить улучшение.
// Baseline: 45ms for imageLoad()
// After optimization: 8ms for imageLoad()
// Confirm: 5.6x speedup verified in InstrumentsСоветы для точного профилирования
Проводите профилирование на физическом устройстве в сборке для выпуска. Симуляторы и сборки для отладки искажают измерения производительности.
// Always:
// 1. Use physical device
// 2. Build with Release configuration (Product → Scheme → Edit → Build → Release)
// 3. Repeat measurement 3+ times for consistencyБыстрая проверка
Какой параметр дерева вызовов Instruments помещает листовые функции, расходующие больше всего времени, в начало списка?
Итоги урока
Запускайте профилирование с помощью Cmd+I → Time Profiler. Используйте Invert Call Tree и Hide System Libraries, чтобы сначала видеть собственный код. Дважды щёлкайте символы для перехода к исходному коду. Проводите профилирование на устройстве в режиме выпуска. Устанавливайте базовые показатели до и после оптимизации, чтобы подтвердить улучшение.
Часто задаваемые вопросы
Урок «Основы Instruments: Time Profiler» бесплатный?
Да — полный текст урока «Основы Instruments: Time Profiler» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Swift Academy, подпишись на CoddyKit PRO. Курс Swift Academy содержит 4 уроков всего.
Чему я научусь в уроке «Основы Instruments: Time Profiler»?
Записывайте загрузку CPU, анализируйте деревья вызовов и находите узкие места в коде. Ты практикуешь Swift Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Swift Academy?
Предыдущий опыт не требуется. Swift Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Основы Instruments: Time Profiler»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Swift Academy?
Да. Каждый урок Swift Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Основы Instruments: Time Profiler
- Инструменты Allocations и Leaks
- Проверка главного потока и зависания
- Оптимизация узких мест: COW, встраивание и специализация