LUA loadstring 应用与优化
LUA loadstring 应用与优化
LUA loadstring
类似加载,从给定的字符串得到块。
要加载和运行一个给定的字符串
一般用法:
assert(loadstring(script))()
and then:
f = loadstring("a = 1") 相当于: f = loadstring("function() a = 1 end")
复杂用法如下:
下面是动态加载字符串,并执行,结果为一个table
local script="local ee={[0]={id=0,lv=5,text='yy'},[1]={id=1,lv=3,text='zz'}} return ee" local tb=assert(loadstring(script))() print(tb[0].text)
下面是动态加载字符串,并执行,结果为方法
local addscript="function dadd(a,b) return a+b end" assert(loadstring(addscript))() print(tostring(dadd(2,3)))
优化:
尽量避免使用loadstring:性能比较:
使用loadstring(在运行时编译代码)
a = os.clock() local lim = 10000 local a = {} for i = 1, lim do a[i] = loadstring(string.format("return %d", i)) end b = os.clock() print(b-a) 1.4 seconds
不适用loadstring
a = os.clock() function fk (k) return function () return k end end local lim = 100000 local a = {} for i = 1, lim do a[i] = fk(i) end b = os.clock() print(b-a) 0.14 seconds
结论:不要再运行时编译代码
浙公网安备 33010602011771号