Speeding up Unreal Editor launch by not spawning unused tooltips
Как ускорить запуск Unreal Editor: не создавать 38 000 тултипов
Unreal Editor запускается долго. Epic борется с этим кэшами, live-coding и прочими оптимизациями, но одна простая проблема оставалась незамеченной: на старте движок генерирует 38 000 виджетов-тултипов, хотя за сессию пользователь видит лишь десяток.
Профилирование показало, что SetToolTipText
тратит ~0,2 мс на каждый тултип, но главное — он не просто сохраняет текст, а сразу создаёт полноценный виджет. В итоге:
- 2–5 с потеряно в дебаг-сборке
- до 1 с в development
- ~40 МБ ОЗУ занято невидимыми виджетами
Решение
- Заменить немедленное создание виджета на ленивое: сохранять только
FText
. - Создавать виджет в момент первого обращения (
GetToolTip
).
Патч — пара строк: убрать Spawn
из сеттера, перенести его в геттер.
Результат: стартовое время падает на ~1 с, ОЗУ экономит десятки мегабайт, а в рантайме задержки не заметны — тултипы всё равно редко вызываются пачками.