Да, IL2CPP
до сих пор медленнее MONO
в общих случаях, хотя ситуация постепенно улучшается. Мы можем как-то улучшить производительность прямо сейчас?
Частично, да. Официальная документация говорит, что мы можем отключить часть внутренних проверок для генерируемого IL2CPP
нейтивного кода. Давайте проверим потенциал данных улучшений на LeoECS фреймворке.
Код теста (без IL2CPP-оптимизаций)
Почему тесты делаются таким способом можно прочитать в “Тесты производительности Event, ActionList, Observer, InterfaceObserver“.
1 | using System.Collections; |
Код теста (с IL2CPP-оптимизацией)
Отличие от предыдущего кода одно - наличие атрибута Il2CppSetOption
на классе (и всех внутренних классах LeoECS
фреймворка):
1 | using System.Collections; |
Результаты
- MONO: 168ms
- IL2CPP без оптимизаций: 293ms
- IL2CPP с оптимизацией: 194ms
Результаты показывают неплохое ускорение (порядка 30%), но IL2CPP
все еще медленнее, чем MONO
.