Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Використання профілів C++

Щоб оптимізувати продуктивність Godot, вам потрібно знати, що оптимізувати в першу чергу. Для цього корисними інструментами є профайлери.

Примітка

У редакторі є вбудований профайлер GDScript, але використання профайлера C++ може бути корисним у випадках, коли профайлер GDScript недостатньо точний або в ньому відсутня інформація через помилки в профайлері.

Налаштування Годо

Щоб отримати корисну інформацію профілювання, абсолютно необхідно використовувати збірку Godot, яка містить символи налагодження. Офіційні двійкові файли не включають символи налагодження, оскільки вони значно збільшать розмір завантаження.

Щоб отримати дані профілювання, які найкраще відповідають робочому середовищу (але з символами налагодження), вам слід скомпілювати двійкові файли з параметрами production=yes debug_symbols=yes SCons.

Можна запустити профайлер на менш оптимізованих збірках (наприклад, target=template_debug без LTO), але результати, природно, будуть менш репрезентативними для умов реального світу.

Попередження

Не видаляйте символи налагодження у двійкових файлах за допомогою команди strip після компіляції двійкових файлів. Інакше ви більше не отримуватимете корисну інформацію профілювання під час запуску профайлера.

Порівняльний аналіз часу запуску/вимкнення

Якщо ви бажаєте оптимізувати продуктивність запуску/вимкнення Godot, ви можете сказати профайлеру використовувати параметр командного рядка --quit у двійковому файлі Godot. Це призведе до виходу з Godot одразу після завершення запуску. Параметр --quit працює з --editor, --project-manager або --path <шлях до каталогу проекту> (який безпосередньо запускає проект).

Дивись також

Перегляньте Використання командного рядка більше аргументів командного рядка, які підтримує Godot.

Спеціальні інструкції профайлера

Дуже Сонний

  • Спочатку запустіть редактор Godot або свій проект. Якщо ви запускаєте менеджер проектів, переконайтеся, що спочатку відредагували або запустили проект. В іншому випадку профайлер не відстежуватиме дочірній процес, оскільки менеджер проекту створюватиме дочірній процес для кожного редагованого або запущеного проекту.

  • Відкрийте VerySleepy і виберіть виконуваний файл Godot у списку процесів ліворуч:

../../../_images/cpp_profiler_verysleepy_select_process.png
  • Натисніть кнопку Профілювати всі праворуч, щоб почати профілювання.

  • Виконайте дії, які ви хочете профілювати, у редакторі чи проекті. Коли закінчите, натисніть Зупинити (а не Перервати).

  • Дочекайтеся появи вікна з результатами.

  • Коли з’явиться вікно результатів, відфільтруйте подання, щоб видалити зовнішні модулі (наприклад, графічний драйвер). Ви можете відфільтрувати за модулем, знайшовши рядок, у якому Модуль збігається з назвою виконуваного файлу Godot, клацнувши правою кнопкою миші цей рядок і вибравши Фільтрувати модуль до <ім’я виконуваного файлу Godot> у спадному списку, що з’явиться.

  • Тепер вікно результатів має виглядати приблизно так:

../../../_images/cpp_profiler_verysleepy_results_filtered.png

hotSpot

  • Відкрийте HotSpot. Натисніть Записати дані:

../../../_images/cpp_profiler_hotspot_welcome.png
  • У наступному вікні вкажіть шлях до двійкового файлу Годо, який містить символи налагодження.

  • Укажіть аргументи командного рядка для запуску конкретного проекту, з редактором або без нього.

  • Шлях до робочого каталогу може бути будь-яким, якщо для аргументу командного рядка --path використовується абсолютний шлях. В іншому випадку має бути встановлено, що відносний шлях до проекту є дійсним.

  • Переконайтеся, що Elevate Privileges позначено, якщо у вас є права адміністратора. Хоча це не є обов’язковим для профілювання Годо, це забезпечить можливість фіксації всіх подій. В іншому випадку деякі події можуть бути відсутніми в записі. Тепер ваші налаштування мають виглядати приблизно так:

../../../_images/cpp_profiler_hotspot_record.png
  • Натисніть Почати запис і виконайте дії, які ви бажаєте профілювати, у редакторі/проекті.

  • Закрийте редактор/проект у звичайний спосіб або скористайтеся кнопкою Зупинити профілювання в HotSpot, щоб завчасно припинити профілювання. Рання зупинка профілювання може призвести до чистіших профілів, якщо вас не цікавить процедура виходу з двигуна.

  • Натисніть Переглянути результати та зачекайте, поки буде створено візуалізацію профілювання:

../../../_images/cpp_profiler_hotspot_view_results.png
  • Використовуйте вкладки вгорі, щоб переходити між різними видами. Ці перегляди показують однакові дані, але різними способами. Вкладка Flame Graph — це хороший спосіб одразу побачити, які функції займають найбільше часу. Тому ці функції є найважливішими для оптимізації, оскільки їхня оптимізація найбільше покращить продуктивність.

  • Унизу всіх вкладок, окрім Підсумку, ви також побачите список потоків ЦП, запущених механізмом, а також використання ЦП для кожного потоку. Це дає змогу побачити потоки, які можуть бути вузьким місцем у певний момент часу.

../../../_images/cpp_profiler_hotspot_flame_graph.png

Примітка

Якщо ви не бажаєте, щоб процедура запуску була включена в профіль, ви також можете приєднати HotSpot до запущеного процесу, клацнувши Записати дані, а потім установивши для параметра спадного меню Запустити програму значення Приєднати до процесу (es).

Цей робочий процес, заснований на підключенні процесу, подібний до того, який використовує VerySleepy.

Інструменти Xcode

  • Відкрийте Xcode. Виберіть Open Developer Tool - Instruments у меню програми Xcode:

  • Двічі клацніть Time Profiler у вікні Instruments:

../../../_images/cpp_profiler_xcode_menu.png
  • У вікні Time Profiler клацніть меню Target, виберіть Choose target... і в наступному вікні вкажіть шлях до двійкового файлу Godot, аргументів командного рядка та змінних середовища.

../../../_images/cpp_profiler_time_profiler.png
  • Ви також можете приєднати Time Profiler до запущеного процесу, вибравши його в меню Target.

  • Натисніть кнопку Почати негайний режим запису, щоб почати профілювання.

../../../_images/cpp_profiler_time_profiler_record.png
  • Виконайте дії, які ви хочете профілювати, у редакторі чи проекті. Коли закінчите, натисніть кнопку Зупинити.

  • Дочекайтеся появи результатів.

  • У нижній частині вікна ви побачите дерево викликів для всіх запущених потоків процесора та огляд Найважчого стека.

  • Виберіть Приховати системні бібліотеки в меню Дерево викликів (внизу вікна), щоб видалити зовнішні модулі.

  • Ви можете використовувати шкалу часу у верхній частині вікна, щоб відобразити деталі за певний період часу.

../../../_images/cpp_profiler_time_profiler_result.png