reckfellENGINE

Instruments: CPU-профиль и метки движка

Выбор процесса, повторяемая запись, call tree и границы измерения.

На этой странице

Instruments нужен для измерения поведения процесса на macOS. Начните с Time Profiler, если требуется найти нагрузку CPU. Он периодически снимает стеки: результат — распределение samples, а не точное время каждого вызова или измерение GPU. Метод чтения call tree описан в документации Apple.

Выберите процесс и сборку

Профилируйте редактор, если медленно работает редактор; игру — если тормозит игра. Встроенный запуск, отдельное окно игры и редактор могут давать разные процессы: запишите путь executable и PID. Для сравнения сохраните одинаковые проект, камеру, renderer, разрешение, VSync/FPS limit, входные данные и конфигурацию.

Нативная сборка с оптимизацией и символами, из Source рядом с SConstruct:

Командная строка
scons platform=macos target=editor arch=arm64 dev_build=no optimize=speed_trace debug_symbols=yes -j4

На Intel замените архитектуру на x86_64. Пример без C#; для C# нужны отдельные стадии сборки macOS. Не используйте медленную debug-конфигурацию как оценку производительности релиза. При этом оптимизация может объединять/встраивать функции, поэтому samples нельзя читать как полный список всех вызовов.

debug_symbols=yes сохраняет информацию для символизации. Для отдельных символов добавьте separate_debug_symbols=yes и сохраните полученный .dSYM вместе с соответствующим бинарником. Если видны адреса вместо функций, проверьте symbols, UUID и архитектуру; другой .dSYM с тем же номером версии 1.0.0 не подходит.

Запишите полезный участок

  1. Откройте Instruments из Xcode и выберите шаблон Time Profiler. Названия и расположение элементов зависят от версии Xcode.
  2. Выберите фактический executable или подключитесь к нужному PID. Для запуска редактора передайте --editor --path /absolute/project, для игры — --path /absolute/project. Путь указывает на папку с project.reckfell.
  3. Сначала дождитесь импорта, загрузки и прогрева шейдеров, если измеряете устойчивый игровой процесс. Если проблема именно в старте, запишите его отдельно с явно указанным состоянием cache.
  4. Запишите короткое повторяемое действие: например, один проход камеры по одному маршруту. Отметьте начало и конец, остановите запись и выделите соответствующий диапазон timeline.
  5. Изучите нужные потоки и call tree; сохраните .trace, конфигурацию сборки, входные данные и описание действия. После изменения повторите тот же сценарий.

Как читать результат

НаблюдениеСледующий шаг
Высокий общий вес функцииПосмотрите дочерние вызовы: inclusive weight включает их. Не приписывайте всё время телу родителя.
Высокий self weightИсследуйте собственную работу функции в выбранном диапазоне.
Весь профиль занимает ожидание/VSyncСверьте FPS limit, потоки, CPU и GPU отдельно. Стек ожидания не доказывает, что эта функция выполняет тяжёлую работу.
Короткий spike исчез в общей статистикеВыделите его на timeline; не усредняйте вместе с долгим простоем.
После Hide System Libraries исчезла причинаВерните библиотеки и проверьте стек целиком; фильтр скрывает строки, а не устраняет работу.

CPU-профиль не доказывает отсутствие GPU bottleneck, allocations, утечек или задержек I/O. Для них нужны соответствующие инструменты и отдельные измерения. Число samples не является точным счётчиком вызовов, а отсутствие функции в короткой записи не означает, что она не выполнялась.

Метки движка

Обычный Time Profiler не требует profiler=instruments. Этот build-флаг включает нативные signposts Reckfell для размеченных участков; это дополнение к sampling, а не автоматическая трассировка всех методов C#:

Командная строка
scons platform=macos target=editor arch=arm64 dev_build=no optimize=speed_trace debug_symbols=yes profiler=instruments -j4

Текущий backend публикует событие Frame и интервалы ReckfellProfileZone; script-zone и memory-макросы в нём пустые. Для просмотра меток добавьте подходящий instrument signposts/Points of Interest в вашей версии Instruments. Отсутствие меток сначала проверяйте по выбранной сборке, процессу, диапазону и настройкам записи. Не включайте profiler-флаги памяти или on-demand в ожидании, что они заменят настройку Instruments: build-скрипт сообщает, что эти параметры для backend игнорируются. Профилирование call stacks и памяти настраивайте в Instruments; не делайте вывод о фактическом capture только по наличию build-флага.

Проверены build-параметры и реализация backend. macOS, Instruments, .trace, нативная символизация и измерения CPU/GPU в этой проверке не запускались; численных обещаний производительности здесь нет.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.