Luajit性能
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Luajit性能相关的知识,希望对你有一定的参考价值。
参考技术A 硬件规格:ecs.t5-lc1m1.smallCPU: 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性能的主要内容,如果未能解决你的问题,请参考以下文章