lua中元表方法速度比较

本文通过实验比较了直接访问表、通过元表间接访问表以及通过元表调用函数访问表的效率。结果显示,使用元表和函数的开销远大于直接访问,特别是函数式写法导致了额外的时间消耗。因此,对于元表的使用,应当考虑其性能影响,避免不必要的函数调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

--------------------------------------------------------

直接对表进行访问与赋值

local vtbl 	= {}
local t 	= {}
--setmetatable(t, {__index = vtbl,
--				__newindex = vtbl
--				})

local t1 = os.clock()
for i = 1, 10000000, 1 do
	t[1] = i
end
local t2 = os.clock()

print(t2 - t1)


输出结果:


>lua -e "io.stdout:setvbuf 'no'" "main.lua" 
0.263
>Exit code: 0

----------------------
通过设置元表为某table来实现访问与赋值:

local vtbl 	= {}
local t 	= {}
setmetatable(t, {__index = vtbl,
				__newindex = vtbl
				})

local t1 = os.clock()
for i = 1, 10000000, 1 do
	t[1] = i
end
local t2 = os.clock()

print(t2 - t1)

输出结果:

>lua -e "io.stdout:setvbuf 'no'" "main.lua" 
0.435
>Exit code: 0


可以看到,多了一层表的访问,时间消耗增加一倍


-----------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值