В чем разница в том, как Lua и LuaJIT обрабатывают код?

Насколько я понял, стандартный интерпретатор Lua сначала компилирует входной код в «байт-код» (выход luac), а затем «интерпретирует» этот байт-код.

Но разве это не определение JIT-компилятора? Что тогда делает LuaJIT? Чем он отличается от стандартного интерпретатора Lua? Как это может быть быстрее?


person user6245072    schedule 02.03.2017    source источник


Ответы (1)


разве это не определение JIT-компилятора? Что тогда делает LuaJIT?

Он реализует свой собственный интерпретатор, который часто быстрее, чем «стандартный» интерпретатор Lua, и JIT-компилирует часто посещаемые фрагменты в машинные инструкции, что дает дополнительный прирост производительности, но ограничивает переносимость (поскольку эти инструкции зависят от машины/архитектуры) .

Есть много других улучшений и оптимизаций, которые вы можете найти в обзоре Майка Полла. . Также см. эту страницу для общего обсуждения JIT и, в частности, комментарии Майка Полла к нему.

person Paul Kulchenko    schedule 02.03.2017
comment
Какой интерпретатор использует Lua? - person user6245072; 03.03.2017
comment
@ user6245072 - Vanilla Lua использует интерпретатор PUC Lua (он не быстрый, но портативный) - person Egor Skriptunoff; 03.03.2017