Skip to content

LuaJIT的简介 ​

什么是 LuaJIT? ​

LuaJIT 是 Lua 的一个即时编译器(Just-In-Time Compiler)实现,把 Lua 代码动态编译成机器码,执行速度比标准解释器快,同时保持与 Lua 语言的高度兼容。

LuaJIT 的主要特点 ​

快是它最大的卖点。JIT 把 Lua 字节码编译成底层机器码,与标准解释器相比,多数情况下有几倍甚至几十倍的提升。兼容性上,LuaJIT 对齐 Lua 5.1 的绝大多数特性,对 Lua 5.2 和 5.3 只支持一部分。FFI(Foreign Function Interface)库让 Lua 脚本直接调用 C 函数、使用 C 数据结构,互操作不用再写一层扩展。垃圾回收它也有自己的一套实现,和标准 Lua 不一样,下面单独说。

LuaJIT 的主要组件 ​

JIT 编译器在运行时把字节码编译成机器码,会识别频繁执行的代码路径并针对性优化。

FFI 库负责 Lua 与 C 的互操作,省掉了写扩展的环节,调用开销也更小。

垃圾回收器同样基于标记-清除算法(增量进行),并针对 LuaJIT 自身的对象模型做了优化。它不使用引用计数,Lua 5.4 的分代回收在 LuaJIT 2.1 中也没有对应实现。

使用 LuaJIT ​

安装可以从 官方网站 下载源码,也可以用包管理工具。Linux 系统下:

  • 安装 LuaJIT:
    sh
    sudo apt-get install luajit
  • 运行脚本:
    sh
    luajit your_script.lua

与标准 Lua 的差异要留意:LuaJIT 与 Lua 5.1 高度兼容,但 Lua 5.2 和 5.3 的特性不是都有,迁移前先确认脚本没有踩到缺口。

LuaJIT 的应用场景 ​

游戏开发、实时数据处理这类对性能敏感的应用用得多。嵌入式系统和资源受限的环境也合适,看中的是它执行快、内存占用低。需要和现有 C 库打交道的场景,FFI 正好派上用场。

Hello Lua