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