LuaJIT真的比其他所有JITdynamic语言更快吗?
根据计算机语言基准游戏,LuaJIT实现似乎击败了所有其他JITdynamic语言 (V8,Tracemonkey,PLT Scheme,Erlang HIPE) 一个数量级 。
我知道这些基准testing并不具有代表性(正如他们所说:“哪种编程语言实现了速度最快的基准testing程序?”),但这仍然非常令人印象深刻。
实际上,情况真的如此吗? 有人testing过Lua的实现吗?
在Lambda终极会议上有一个很好的讨论。 LuaJIT非常好。
许多人报告lua-l (lua邮件列表)上令人印象深刻的加速。 对于纯粹的Lua代码,加速是最令人印象深刻的; 当可加载库模块中的C函数有很多调用时,跟踪编译器不是那么有效。
在我的情况下(游戏原型开发),我没有观察到任何性能改进。 我使用lua进行embedded,所以有很多C ++库函数的调用。 即使主循环在lua脚本中,并且所有重要的逻辑都在lua中实现,但整体性能是通过渲染以C ++实现的引擎和物理引擎来确定的。 原来的lua对于这样的应用已经足够快了。
我在这里学到了一些经验教训: http : //www.sampalib.org/luajit2.0_tunning.html有些数据不再有效(maxmcode = 1024就足够了),但是luajit在600线的代码纯粹的Lua脚本(没有C调用命中perfs …),这不是一个大规模的应用程序,也不是一个embedded式的用例,但比基准更多。
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)等更快,…