根据计算机语言基准测试,LuaJIT 实现似乎比其他所有 JIT-ed 动态语言(V8、Tracemonkey、PLT Scheme、Erlang HIPE)高出一个数量级。
我知道这些基准测试并不具有代表性(正如他们所说:“哪种编程语言实现具有最快的基准测试程序?”),但这仍然令人印象深刻。
在实践中,真的是这样吗?有人测试过 Lua 的实现吗?
根据计算机语言基准测试,LuaJIT 实现似乎比其他所有 JIT-ed 动态语言(V8、Tracemonkey、PLT Scheme、Erlang HIPE)高出一个数量级。
我知道这些基准测试并不具有代表性(正如他们所说:“哪种编程语言实现具有最快的基准测试程序?”),但这仍然令人印象深刻。
在实践中,真的是这样吗?有人测试过 Lua 的实现吗?
在Lambda the Ultimate上有很好的讨论。LuaJIT 非常好。
许多人在lua-l(lua 邮件列表)上报告了令人印象深刻的加速。纯 Lua 代码的加速效果最为显着;当可加载库模块中有大量对 C 函数的调用时,跟踪编译器就没有那么有效了。
就我而言(游戏原型开发),我根本没有观察到性能提升。我使用 lua 进行嵌入,因此有很多对 C++ 库函数的调用。尽管主循环在 lua 脚本中并且所有重要的逻辑都在 lua 中实现,但整体性能是由用 C++ 实现的渲染引擎和物理引擎决定的。原来的 lua 对于这样的应用程序已经足够快了。
我用这里学到的教训做了一个实验:http: //www.sampalib.org/luajit2.0_tunning.html 一些数据不再那么有效(maxmcode=1024 就足够了),但是 luajit 在 600 行上带来了强大的改进代码纯 Lua 脚本(没有 C 调用来命中性能...),它不是大规模应用程序,也不是嵌入式用例,但比基准测试要多得多。
JIT 的性能取决于两件事:原始脚本语言的性能和编译器的性能。
编译器是一种相当成熟的技术,大多数 JIT 编译器具有相当的性能。然而,lua 本身,即 lua-without-JIT,可能是最快的脚本语言之一。
lua 比没有 JIT 的 Java 更快。lua 比 Javascript-without-JIT 更快。lua 比大多数没有 JIT 的脚本语言更快。
所以,
lua-JIT 比 Java-with-JIT(sun Java)快,lua-JIT 比 V8(Javascript-with-JIT)快,等等,...