- Главная
- →
- Lua @ HighLoad++
Тонкости работы трассирующего JIT-компилятора Lua @ HighLoad++
Инженер-программист. В данный момент занимается разработкой и поддержкой рантайм-платформы и JIT-компилятора языка Lua.
Тезисы
Наша компания более 9 лет использует язык Lua для реализации бизнес-логики в проектах. Довольно быстро мы пришли к LuaJIT в качестве рантайм-платформы, а пару лет назад, столкнувшись с серьёзными архитектурными ограничениями этого продукта, создали собственный форк и успешно мигрировали на него.
Анализируя производительность JIT-компилятора, доставшегося в наследство от LuaJIT'а, мы столкнулись с парадоксальной ситуацией: в некоторых случаях динамическая компиляция не улучшала (а иногда и ухудшала) производительность. В докладе я расскажу о том, как мы решали эту проблему, в частности о том:
* Какие инструменты мы использовали для анализа.
* Как выиграть 10%, отключив некоторые оптимизации JIT-компилятора и заставив его компилировать меньше, но лучше.
* Как выиграть ещё 10% в ситуации, когда трассирующая компиляция "спотыкается" об архитектуру приложения.