Luajit性能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Luajit性能相关的知识,希望对你有一定的参考价值。

参考技术A 硬件规格:ecs.t5-lc1m1.small
CPU: Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz

耗时由1.5秒提升到0.9秒

用时:1.5160000324249

用时:0.94700002670288

耗时由0.93秒提升到0.03秒

用时:0.93299984931946

用时:0.032000064849854

耗时由0.06秒提升到0.035秒

用时:0.06600022315979

用时:0.035000085830688

耗时由0.9秒提升到0.75秒

用时:0.90300011634827

用时:0.75699996948242

为啥 LuaJIT 这么好?

【中文标题】为啥 LuaJIT 这么好?【英文标题】:Why is LuaJIT so good?为什么 LuaJIT 这么好? 【发布时间】:2011-06-22 03:46:34 【问题描述】:

编辑:不幸的是,LuaJIT 在下面的链接中被排除在比较之外。

comparison 的编程语言表明 LuaJIT 比普通的 Lua 实现有十倍以上的改进。 为什么变化如此之大? Lua 是否有一些特定的东西使它从 JIT 编译中受益匪浅? Python 也是动态类型化并编译为字节码的,那么为什么 PyPy(我相信现在有 JIT)没有表现出如此大的性能提升?

【问题讨论】:

简单的答案:Mike Paul 是神 :) 【参考方案1】:

Mike Pall 在几个地方谈到了这一点:

http://article.gmane.org/gmane.comp.lang.lua.general/58908 http://lambda-the-ultimate.org/node/3851 http://www.reddit.com/user/mikemike

与每个高性能系统一样,最终的答案归结为两件事:算法和工程。 LuaJIT 使用先进的编译技术,并且它也有一个非常精细的实现。例如,当花哨的编译技术无法处理一段代码时,LuaJIT 会退回到用 x86 汇编编写的非常快速的解释器。

LuaJIT 在工程方面获得双分,因为不仅 LuaJIT 本身设计精良,而且 Lua 语言本身的设计比 Python 和 JavaScript 更简单、更连贯。这使得实现更容易(稍微)提供始终如一的良好性能。

【讨论】:

LuaJIT 无疑是优秀算法和优秀工程的典范。那个(或这个)读起来像营销文本是无关紧要的。汇编中的手动编码解释器循环比 C 版本的解释器快得多,这是良好工程的示例。别名分析、存储接收、负载转发、nan-tagging、寄存器分配和高效的跟踪组合/退出是优秀算法(和工程)的例子。

以上是关于Luajit性能的主要内容,如果未能解决你的问题,请参考以下文章

厚积薄发LuaJIT性能热点函数优化

luajit啥时候有的

luajit 开启FFI + jit之后彪悍的性能

luajit VS C,运行性能超过C?

LuaJIT 是如何工作的 - 解释模式

LuaJIT 是如何工作的 - JIT 模式