lua - 有人可以解释一下 Lua 的解释器,为什么它这么快?

标签 lua interpreter language-design

我一直在查看来自 Lua's standalone interpreter 的源代码到目前为止我还无法理解它。

也许我的谷歌搜索技能已经磨损,但我一直无法找到一个很好的解释它是如何工作的。 Lua 的代码似乎针对性能而不是可读性进行了优化。

最佳答案

感知速度有两个来源:脚本编译和脚本执行。

脚本编译使用递归下降解析器结合优先表达式解析器。见 http://www.lua.org/source/5.1/lparser.c.html .

脚本执行为虚拟机解释指令。这台机器很快,因为它专门处理 Lua 的语义,还因为它是一个基于寄存器的虚拟机,比早期版本的 Lua 中使用的基于堆栈的虚拟机要快。见 http://www.lua.org/source/5.1/lopcodes.h.html .

关于lua - 有人可以解释一下 Lua 的解释器,为什么它这么快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19962262/

相关文章:

lua - 如何确定给定键的值在 Redis 上占用的内存量?

arrays - Redis Lua 脚本未按预期工作

c - 哪些库可用于在 C 中实现小型语言解释器?

lua - 常规 Lua 解释器与 LuaJIT 解释器?

ruby - 为什么 Ruby 哈希被称为哈希,而不是映射、字典、表或关联数组?

scala - 为什么有些集合类除了类方法之外还有一个 "empty"实例方法?

lua - 如何检查字符串中断字符?

c - Windows Lua 到可执行文件

ruby - 如果 Ruby 的所有实现都被编译成字节码,Ruby 真的是一种解释型语言吗?

C# 语言设计 : method group inside `is` operator