script - ¿Es LuaJIT realmente más rápido que cualquier otro lenguaje dinámico JIT-ed?
lua tutorial español (4)
De acuerdo con el juego de referencia del lenguaje de computadora, la implementación de LuaJIT parece superar a cualquier otro lenguaje dinámico JIT-ed (V8, Tracemonkey, PLT Scheme, Erlang HIPE) en un orden de magnitud .
Sé que estos puntos de referencia no son representativos (como dicen: "¿Qué implementaciones de lenguaje de programación tienen los programas de puntos de referencia más rápidos?"), Pero esto todavía es realmente impresionante.
En la práctica, ¿es realmente el caso? ¿Alguien ha probado esa implementación de Lua?
El rendimiento de JIT depende de dos cosas: el rendimiento del lenguaje de scripting original y el rendimiento del compilador.
El compilador es una técnica bastante madura y la mayoría del compilador JIT tiene un rendimiento comparable. Sin embargo, lua en sí, es decir, lua-without-JIT, es probablemente uno de los lenguajes de scripting más rápidos.
lua es más rápido que Java sin JIT. lua es más rápido que Javascript sin JIT. lua es más rápido que la mayoría de los lenguajes de scripting sin JIT.
asi que,
lua-JIT es más rápido que Java-con-JIT (el sol Java), lua-JIT es más rápido que V8 (Javascript-con-JIT), etc.
En mi caso (un desarrollo de prototipo de juego), no observé ninguna mejora en el rendimiento. Uso lua para incrustar, por lo que hay muchas llamadas a las funciones de la biblioteca de C ++. Aunque el bucle principal está en un script de lua y toda la lógica importante se implementa en lua, el rendimiento general se determinó mediante los motores de renderización y los motores de física implementados en C ++. El lua original ya es lo suficientemente rápido para tales aplicaciones.
Hay una buena discusión en Lambda the Ultimate . LuaJIT es muy bueno.
Muchas personas han reportado aceleraciones impresionantes en lua-l (la lista de correo de lua). Las aceleraciones son más impresionantes para el código Lua puro; El compilador de seguimiento no es tan efectivo cuando hay muchas llamadas a funciones C en módulos de biblioteca cargables.
Hice un experimento con la lección aprendida aquí: http://www.sampalib.org/luajit2.0_tunning.html Algunos datos ya no son tan válidos (maxmcode = 1024 es suficiente), pero luajit trae una mejora sólida en 600 líneas de código Lua puro (no hay llamada C para golpear perfs ...) que no es una aplicación a gran escala ni un caso de uso incrustado sino mucho más que los puntos de referencia.