推荐书籍:
Lua特性
0.速度极快、轻量级
- 在目前所有脚本引擎中,Lua的速度是最快的。
- Lua适合作为嵌入式脚本。(Redis+Lua、Nginx+Lua等等)
1.
变量名没有类型,值才有类型,变量名在运行时可与任何类型的值绑定;
- 类似于js,弱类型。
2. 语言只提供唯一一种
数据结构(不是唯一的数据类型),称为表(table),
- 它混合了数组、哈希,可以用任何类型的值作为key和value。提供了一致且富有表达力的表构造语法,使得Lua很适合描述复杂的数据;
3. 函数是一等类型(即函数是一种数据类型)
- 支持匿名函数、闭包(closure) 、正则尾递归(proper tail recursion);
4. 支持词法定界(lexical scoping)
5. 提供thread类型和结构化的协程(coroutine)机制,
- 在此基础上可方便实现协作式多任务;
6. 运行期能编译字符串形式的程序文本并载入虚拟机执行;
7. 通过元表(metatable)和元方法(metamethod)提供
动态元机制(dynamic metamechanism),
- 从而允许程序运行时根据需要改变或扩充语法设施的内定语义;
8. 能方便地利用表和动态元机制实现
基于原型(prototype-based)的
面向对象模型;
9. 从5.1版开始提供了完善的
模块机制,
- 从而更好地支持开发大型的应用程序;
LuaJIT
LuaJIT 的运行速度比标准 Lua 快数十倍,
是一个 Lua 的高效率版本。
它利用JIT编译技术把Lua代码编译成本地机器码后交由CPU直接执行。
什么是JIT?
- 即时编译
- 参考java JIT:
- 在主流商用JVM(HotSpot、J9)中,Java程序一开始是通过解释器(Interpreter)进行解释执行的。当JVM发现某个方法或代码块运行特别频繁时,就会把这些代码认定为“热点代码(Hot Spot Code)”,然后JVM会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为:即时编译器(Just In Time Compiler,JIT)