JIT-компиляция в .NET позволяет создавать кроссплатформенные приложения и решает проблемы взаимодействия сборок в рантайме, но может негативно сказаться на производительности приложения, особенно на этапе старта, когда необходимо загрузить и скомпилировать множество методов сразу.
.NET на протяжении всей своей истории имел средства для решения этой проблемы, позволяющие предкомпилировать весь или часть кода заранее. Например, Ngen в .NET Framework или CoreRT как самостоятельная платформа. В современном .NET основное средство для Ahead-of-Time compilation — это Crossgen2.
К сожалению, Ahead-of-Time компиляция — далеко не серебряная пуля, а технология, несущая свои tradeoffs и не гарантирующая прирост производительности.
В докладе я расскажу:
- какие проблемы можно попробовать решить с помощью AOT
- какие средства для нативной компиляции .NET сейчас актуальны и какие ограничения они накладывают
- об особенностях работы с crossgen2
- о проблемах, с которыми пришлось столкнуться
- как измерить выигрыш в производительности от внедрения AOT
- почему с AOT вам стоит немного подождать (.NET 7)
Слушатели узнают fail story о планировании разработки и научатся предвидеть риски по поводу многообещающих технологий.