Manuals
Manuals




This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English

Профілювання

Defold містить інструменти профілювання, інтегровані з рушієм і процесом збирання. Вони допомагають виявляти проблеми з продуктивністю, пам’яттю та використанням ресурсів. Дані профілювання під час виконання можна переглядати за допомогою кількох засобів:

  • Базовий профайлер і вбудований у гру візуальний профайлер доступні на всіх платформах.
  • Профайлер Remotery та інтерактивний вебпрофайлер кадрів доступні на настільних і мобільних платформах.
  • Збірки HTML5 можуть передавати області профілювання (scopes) Defold до Web Performance API браузера.

Налаштування Profiler у маніфесті застосунку (App Manifest) визначає, чи включається код профайлера до збірки під час компонування. Типове значення — Debug Only, значення None виключає цей код, а Always включає його як до налагоджувальних збірок, так і до збірок випуску. Налаштування profiler у game.project керують поведінкою під час виконання, але не повертають виключений код профайлера до збірки. Зокрема, Track CPU керує збором вибірок використання CPU; воно задається окремо від вибору в App Manifest.

Візуальний профайлер середовища виконання

Збірки з підтримкою профайлера містять візуальний профайлер середовища виконання, який відображає поточну інформацію поверх запущеного застосунку:

function on_reload(self)
    -- Toggle the visual profiler on hot reload.
    profiler.enable_ui(true)
end

Візуальний профайлер

Візуальний профайлер надає низку функцій, за допомогою яких можна змінювати спосіб відображення його даних:


profiler.set_ui_mode()
profiler.set_ui_view_mode()
profiler.view_recorded_frame()

Докладніше про функції профайлера див. у довіднику API профайлера.

Вебпрофайлер

Під час роботи настільної або мобільної збірки з підтримкою профайлера інтерактивні профайлери кадрів і ресурсів доступні через браузер.

Профайлер кадрів Remotery

Профайлер кадрів дає змогу збирати вибірки даних під час роботи гри та докладно аналізувати окремі кадри. Щоб відкрити профайлер:

  1. Запустіть гру на цільовому пристрої.
  2. Виберіть пункт меню Debug ▸ Open Web Profiler.

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

Вебпрофайлер

Якщо ви одночасно використовуєте кілька цільових пристроїв, між ними можна перемикатися вручну: змініть поле Connection Address угорі сторінки на URL профайлера Remotery, показаний у консолі під час запуску гри на відповідному пристрої:

INFO:ENGINE: Defold Engine 1.3.4 (80b1b73)
INFO:DLIB: Initialized Remotery (ws://127.0.0.1:17815/rmt)
INFO:ENGINE: Loading data from: build/default
Часова шкала вибірок (Sample Timeline)
Подання Sample Timeline показує кадри даних, зібраних у рушії, — по одній горизонтальній часовій шкалі для кожного потоку. Main — це головний потік, у якому виконується вся ігрова логіка та більшість коду рушія. Remotery — це потік самого профайлера, а Sound — потік змішування й відтворення звуку. Ви можете збільшувати й зменшувати масштаб (коліщатком миші) та вибирати окремі кадри, щоб переглянути докладні дані кадру в поданні Frame Data.

Часова шкала вибірок

Дані кадру (Frame Data)
Подання Frame Data — це таблиця, у якій докладно наведено всі дані поточного вибраного кадру. Ви можете переглянути, скільки мілісекунд витрачено в кожній області профілювання рушія.

Дані кадру

Глобальні властивості (Global Properties)
Подання Global Properties показує таблицю лічильників. З їхньою допомогою легко, наприклад, відстежувати кількість викликів малювання або кількість компонентів (components) певного типу.

Глобальні властивості

Значення LuaMem — це обсяг пам’яті в кілобайтах, який використовує віртуальна машина Lua за даними збирача сміття Lua. Memory — це обсяг пам’яті в кілобайтах, який використовує рушій.

Налаштування Max Sample Count обмежує кількість вибірок профайлера, записаних для кожного потоку за один кадр. Якщо профайлер повідомляє про перевищення цього обмеження, спершу перевірте код профілювання нативних розширень на наявність непарного початку або кінця області профілювання. Підвищуйте обмеження лише тоді, коли кадр справді містить більше областей профілювання, ніж дозволяє встановлене значення.

Профайлер ресурсів

Профайлер ресурсів дає змогу інспектувати гру під час її роботи й докладно аналізувати використання ресурсів. Щоб відкрити профайлер:

  1. Запустіть гру на цільовому пристрої.
  2. Відкрийте браузер і перейдіть за адресою http://localhost:8002

Профайлер ресурсів поділено на 2 розділи: один показує ієрархію колекцій (collections), ігрових об’єктів (game objects) і компонентів, екземпляри яких наразі створено у вашій грі, а інший — усі завантажені ресурси.

Профайлер ресурсів

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

Часова шкала продуктивності браузера для HTML5

Для часової шкали в браузері HTML5 використовує Web Performance API замість Remotery. Щоб записати області профілювання Defold:

  1. Переконайтеся, що вибраний у App Manifest режим профайлера включає його підтримку до варіанта збірки, який ви запускаєте.
  2. Увімкніть Performance Timeline Enabled (profiler.performance_timeline_enabled) у game.project.
  3. Запустіть збірку HTML5 і відкрийте інструменти розробника браузера.
  4. Запишіть сеанс на панелі Performance браузера та інспектуйте області профілювання Defold на отриманій часовій шкалі.

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

Звіти про збирання

Під час пакування гри можна створити звіт про збирання. Він дуже корисний для розуміння розміру всіх ресурсів, що входять до пакета гри. Просто встановіть прапорець Generate build report під час пакування гри.

Звіт про збирання

Засіб збирання створить файл report.html поруч із пакетом гри. Відкрийте цей файл у веббраузері, щоб переглянути звіт:

Звіт про збирання

Розділ Overview наочно показує загальний розподіл розміру проєкту за типами ресурсів.

Розділ Resources показує докладний список ресурсів, який можна сортувати за розміром, ступенем стиснення, шифруванням, типом і назвою каталогу. Використовуйте поле «search», щоб фільтрувати відображувані записи ресурсів.

Розділ Structure показує розміри відповідно до того, як ресурси впорядковано у файловій структурі проєкту. Записи позначено кольорами від зеленого (малий розмір) до синього (великий розмір) залежно від відносного розміру файлу та вмісту каталогу.

Зовнішні інструменти

Окрім вбудованих інструментів, існує широкий вибір якісних безкоштовних інструментів трасування й профілювання. Ось деякі з них:

ProFi (Lua)
Ми не постачаємо вбудованого профайлера Lua, але існують зовнішні бібліотеки, якими досить легко користуватися. Щоб з’ясувати, на що ваші скрипти витрачають час, самостійно додайте вимірювання часу у свій код або скористайтеся бібліотекою профілювання Lua, наприклад ProFi.

Зауважте, що профайлери, написані лише мовою Lua, створюють значні накладні витрати з кожним встановленим обробником перехоплення (hook). Тому до отриманих за допомогою такого інструмента профілів часу слід ставитися з певною обережністю. Водночас профілі кількості викликів достатньо точні.

Instruments (macOS та iOS)
Це аналізатор і візуалізатор продуктивності, що входить до складу Xcode. Він дає змогу трасувати та інспектувати поведінку одного чи кількох застосунків або процесів, досліджувати особливості пристрою (наприклад, Wi-Fi і Bluetooth) та багато іншого.

Інструмент Instruments

OpenGL profiler (macOS)
Частина пакета «Additional Tools for Xcode», який можна завантажити з сайту Apple (виберіть Xcode ▸ Open Developer Tool ▸ More Developer Tools... у меню Xcode).

Цей інструмент дає змогу інспектувати запущений застосунок Defold і бачити, як він використовує OpenGL. За його допомогою можна трасувати виклики функцій OpenGL, встановлювати точки зупинки на функціях OpenGL, досліджувати ресурси застосунку (текстури, програми, шейдери тощо), переглядати вміст буферів і перевіряти інші аспекти стану OpenGL.

Профайлер OpenGL

Android Profiler (Android)
https://developer.android.com/studio/profile/android-profiler.html

Набір інструментів профілювання, який збирає в реальному часі дані про використання CPU, пам’яті та мережеву активність вашої гри. Ви можете трасувати методи під час виконання коду на основі вибірок, зберігати дампи купи, переглядати виділення пам’яті та інспектувати подробиці файлів, переданих мережею. Для використання цього інструмента потрібно встановити android:debuggable="true" у AndroidManifest.xml.

Профайлер Android

Примітка: починаючи з Android Studio 4.1, також можна запускати інструменти профілювання без запуску Android Studio.

Graphics API Debugger (Android)
https://github.com/google/gapid

Це набір інструментів, який дає змогу інспектувати, змінювати й повторно відтворювати виклики застосунку до графічного драйвера. Для використання цього інструмента потрібно встановити android:debuggable="true" у AndroidManifest.xml.

Налагоджувач графічного API