Lua 性能进阶:VM 原理、Table 布局优化与 JIT 编译
Lua 性能进阶:Lua VM 原理、Table 布局优化、JIT 编译优化 适合读者:有一定 Lua 使用经验,想深入理解底层原理并写出高性能 Lua 代码的开发者 本文以 Lua 5.3 为主(项目中的 Lua 5.4 大同小异),JIT 部分以 LuaJIT 为例 第一章:Lua VM 概览 1.1 Lua 是一门什么语言? Lua 是一门动态类型、寄存器式虚拟机的语言。这个定义里最关键的是"寄存器式虚拟机"——它决定了 Lua 的执行模型。 对比一下两种虚拟机模型: 模型 代表 特点 栈式虚拟机 JVM, Python 大部分指令操作栈顶元素 寄存器式虚拟机 Lua, Dalvik 指令直接操作虚拟寄存器(类似 CPU 寄存器) 寄存器式的好处是什么?一条指令能干更多事。比如 a = b + c,Lua 编译器会生成一条 ADD R(a) R(b) R(c) 指令,直接完成;而栈式可能需要 push b; push c; add; pop a 四条指令。 1.2 Lua 程序是怎么跑起来的? 1 源代码 → 词法分析 → 语法分析 → 字节码生成 → VM 执行 我们写一段 Lua 代码,看看它编译成什么样子: ...