1 全局变量local化
在lua中使用全局变量都会在全局表(_G)中进行检索,一个函数如果多次使用同一个全局变量应该将其local化存于函数栈中。
例如 local cc = cc,后面关于cc的调用会直接在函数栈中直接获取cc表,省去了检索全局表的操作。包括lua提供的库函数例如
local tableinsert = table.insert
2 善用upvalue
updatevalue是lua函数中使用的外部非全局变量,lua函数在查找一个变量的的查找顺序是函数栈、upvalue、全局表。upvalue可以起到成员保护的作用,而且具有很好的性能。但是update是和其使用的函数绑定的,使用的时候要特别注意生命周期的问题。例如我们可以这样定义一个模块
local t = {}
local iCount = 0
function t:Add(value)
iCount = iCount+value
end
return t
3 复用表减少gc压力
lua的gc是一个非常耗时耗力的操作,所以程序中要尽量减少临时表的创建,尽量复用已经不用的表。
4 使用lua_ref优化c++调用lua
c++调lua比lua调c++开销要大的多,executeFunctionByHandler接口每次都要传入字符串查找函数表,再到函数表中获取函数,字符串操作是lua中开销比较大的操作,使用lua_getref直接获取函数性能会好很多。
5 谨慎创