2011-02-06 58 views
48

编辑:不幸的是LuaJIT被拿出来的比较下面的链接。为什么LuaJIT这么好?

这种编程语言的comparison表明LuaJIT比通常的Lua实现具有十倍以上的改进。 为什么变化如此之大?是否有一些关于Lua的具体内容,使它从JIT编译中受益匪浅? Python是动态类型的,并且也被编译为字节码,所以为什么PyPy(我相信现在有JIT)在性能上显示出如此大的跳跃?

+33

简单的答案:迈克保罗是一位神:) – Necrolis 2011-02-06 10:10:19

回答

56

迈克·鲍尔一直在谈论这几个地方:

与每一个高性能的系统,最终的答案归结为两件事:算法和工程。 LuaJIT使用先进的编译技术,并且它还有一个非常精细的工程实现。例如,当花哨的编译技术无法处理一段代码时,LuaJIT会回退到用x86汇编编写的非常快速的解释器。因为不仅LuaJIT本身设计良好,而且Lua语言本身具有比Python和JavaScript更简单和更连贯的设计,因此LuaJIT在工程方面获得了双重优势。这使得实现更容易(略微)提供一致的良好性能。

+20

LuaJIT是一个非常好的算法和卓越的工程的绝佳例子。这个(或这个)是否像营销文本一样是无关紧要的。组装中的手工编码解释器循环显着快于解释器的C版本,这些都是很好的工程实例。别名分析,商店下沉,负载转发,nan-tagging,寄存器分配和高效跟踪组合/退出都是优秀算法(和工程)的例子。 – Eloff 2013-12-31 20:20:50