LuaJIT - это отслеживание JIT, что означает, что он может повторно оптимизировать себя для лучшего набора данных, передаваемых через среду выполнения, однако LLVM является статическим JIT и, таким образом, будет генерировать только одноразовую лучшую машину код для соответствующего источника, что может привести к его потере производительности в плотных циклах или плохих предсказаниях.
Фактическая виртуальная машина LuaJIT также высоко оптимизирована, с резьбой, с конкретной машиной, где LLVM использует C++ для переносимости (и по другим причинам), поэтому это явно дает LuaJIT огромное преимущество. LLVM также имеет намного более высокие накладные расходы, чем LuaJIT, потому что LuaJIT был разработан для работы на гораздо менее мощных системах (таких как процессоры ARM).
Байт-код LuaJIT также был специально разработан для LuaJIT, где, поскольку биткод LLVM намного более общий, это, очевидно, ускорит выполнение LuaJIT. Байт-код LuaJIT также хорошо разработан для подсказок оптимизации кодирования и т. Д. Для использования JIT и трассировщиком.
игнорируя тот факт, что это два разных типа JIT, все сравнение сводится к тому, что LLVM ориентирован на генерацию JIT/компилятора, LuaJIT ориентирован на выполнение Lua как можно быстрее наилучшим образом, таким образом, он выигрывает от того, чтобы не быть ограниченным общими.
Вам нужно будет задать более конкретный вопрос, чем это. – jer
Извините. Я обновил вопрос. Спасибо за указание. – are
@Neopallium, вы можете ответить на это? (он автор http://code.google.com/p/llvm-lua/) – osgx