Unity 6.3
0 онлайн 26 гостей 3 в системе
Вход

Burst компиляция

Burst — это компилятор, работающий на подмножестве C#, упоминаемом в контексте Unity как High-Performance C# (HPC#). Burst использует LLVM для перевода .NET Промежуточный язык (IL) в код, оптимизированный для производительности на целевой архитектуре CPU.

Burst первоначально был разработан для использования с системой заданий Unity. Задания — это структуры, которые реализуют IJob интерфейс и представляют небольшие единицы работы, которые могут выполняться параллельно и задействовать все доступные ядра CPU. Разбиение работы на задания, компилируемые через Burst, может заметно ускорить код, ограниченный производительностью CPU. Подробнее см. Написать многопоточное программное обеспечение с помощью системы заданий.

Помимо заданий, Burst может компилировать и статические методы — при условии, что код внутри них относится к поддерживаемому подмножеству C#. О том, что входит в High-Performance C#, см. HPC# обзор.

Burst играет ключевую роль в технологиях Entity Component System (ECS) Unity — наборе взаимозависимых пакетов, совместная работа которых обеспечивает высокую производительность кода. Однако Burst можно использовать независимо от ECS и интегрировать в любой проект Unity, использующий поддерживаемые возможности C#.

Дополнительные сведения о Burst см. в документации пакета компилятора Burst.

Роль Burst в конвейере компиляции

Burst не является полноценным скриптовым бэкендом, поскольку поддерживает лишь подмножество C#. Он не может заменить в проекте Mono или IL2CPP, а дополняет любой из них.

Когда вы включаете пакет Burst в свой проект, скриптовый сервер компилирует код по умолчанию, а Burst компилирует совместимые с Burst части, которые помечены для компиляции Burst.

Ваша C# скрипты компиляции на средний язык (ILДля методов, обозначенных для Burst, что IL далее компилируется Burst в собственный код. Burst компиляции в режиме < <JIT) в Unity EditorРежим воспроизведения, но заранее времени (AOT) в сборках игрока.

Подмножество C#, поддерживаемое Burst, не поддерживает управляемые объекты. Unity содержит пакеты, предназначенные для предоставления Burst-совместимых версий общих типов и структур данных. Пакет Коллекции предлагает Burst-совместимые коллекции, такие как массивы и списки, а Unity Mathematics предлагает Burst-совместимые математические функции.

Компиляция с Burst

Код Burst компилируется, если выполнены следующие условия:

  • Код Burst-совместим с.
  • Компиляция Burst включена, либо через Burst AOT Настройки для сборок Player, либо через Burst меню для Unity Editor кода.
  • Код явно помечен атрибутом [BurstCompile] или ссылка на него сделана из кода, который это делает.

Вы можете использовать символ сценария ENABLE_BURST_AOT условно компилировать секции вашего кода только тогда, когда Burst AOT включен параметр компиляции.

Для получения дополнительной информации, см. Burst компиляция

Дополнительные ресурсы