lua:认识

Lua实现了一个安全的运行环境、一套自动内存管理机制、优秀的字符串处理能力和动态大小数据的处理功能。

 

我们都知道,只要应用程序加入lua解析器的功能,就能解析lua脚本。那lua脚本是怎样执行的?

我们通常用dofile去打开编译一个lua脚本。当应用程序调用dofile后,在执行完脚本后,才能后到主程序中,这lua脚本相当于一个函数。要等函数执行完才能回到主程序中。

在lua脚本中,一般有变量,函数,这些东西都保存在一个常规的table中,这个table称为“环境”。

 

loadfile、dofile、require


loadfile——只编译,不运行
dofile——执行
require——我只执行一次

用require函数只能加载一次,因为它的特性是:

1、require函数会搜索目录加载文件

2、require会判断是否文件已经加载避免重复加载同一文件。

但当有一些特殊的需求需要反复加载某个lua文件,那如何实现反复加载一个lua文件?

答案是:二次加载前加这一句

package.loaded[luafile] = nil

 

lua table


 关联数组是一种具有特殊索引方式的数组。不仅可以通过整数来索引它,还可以使用字符串或其它类型的值(除了nil)来索引它。

 

调试库


 调试库由两类函数组成:自省函数和钩子。自省函数允许检查一个正在运行中程序的各个方面,例如它的活动函数栈、当前执行的行、局部变量的名称和值。钩子则允许跟踪一个程序的执行。

 

lua使用优化建议


 

使用局部变量local

这是最基础也是最有用的策略,虽然使用全局变量并不能完全避免,但还是应该尽量避免,取而代之使用局部变量即local。这里的局部变量也包括函数function,因为在Lua里函数也是一个变量。局部变量的存取会更快,而且在生命周期之外就会释放掉。

 

尾调用

参考

http://wuzhiwei.net/lua_performance/

posted @ 2018-06-21 14:52  _raindrop  阅读(228)  评论(0编辑  收藏  举报