关注
楼主你好,对于Lua配置表优化笔记我有个问题不大理解,文中给的优化方案在访问时元方法里面实际上还是进行了一次key-value的哈希吧,好像还是牺牲了时间来换空间,并不是文中说的优化了访问时间,我测了下在访问时间上应该是比优化前更耗时的,以下是我测试的代码和结果
local loopTimes = 100000
local _key2index = { id = 1, name = 2, number = 3 }
local _o = {
__index = function(data, key)
local index = _key2index[key]
if index == nil then
return nil
end
return data[index]
end,
__newindex = function(data, key, value)
error("Can't modify a readonly table!")
end
}
local _M = {
[1] = setmetatable({1,"test1",100}, _o),
[2] = setmetatable({2,"test2",200}, _o)
}
local _X = {
[1] = { id = 1,name = "test1",number = 100 },
[2] = { id = 2,name = "test2",number = 200 }
}
local a
print(os.clock())
for i = 1,loopTimes do
a = _M[1].id
end
print(os.clock())
for i = 1,loopTimes do
a = _M[1].id
end
print(os.clock())
for i = 1,loopTimes do
a = _X[1].id
end
print(os.clock())
查看原帖
点赞 3
相关推荐
牛客热帖
更多
正在热议
更多
# 在大厂上班是一种什么样的体验 #
12756次浏览 173人参与
# 你的mentor是什么样的人? #
51259次浏览 724人参与
# 程序员找工作至少要刷多少题? #
21675次浏览 278人参与
# 我和mentor的爱恨情仇 #
106370次浏览 951人参与
# 论秋招对个人心气的改变 #
13898次浏览 193人参与
# 机械人避雷的岗位/公司 #
44300次浏览 311人参与
# 为了减少AI幻觉,你注入过哪些设定? #
6356次浏览 185人参与
# 秋招落幕,你是He or Be #
54341次浏览 618人参与
# 校招第一份工作你干了多久? #
136725次浏览 597人参与
# 高薪高压 vs 低薪wlb,你怎么选? #
47512次浏览 291人参与
# 设计人如何选offer #
189791次浏览 868人参与
# 考公VS就业,你怎么选? #
92031次浏览 507人参与
# 职场上哪些行为很加分? #
322718次浏览 3604人参与
# 你的秋招进行到哪一步了 #
2531713次浏览 23253人参与
# 牛客AI体验站 #
8049次浏览 213人参与
# 机械人还在等华为开奖吗? #
312271次浏览 1582人参与
# 秋招投递记录 #
381063次浏览 3204人参与
# 12306一秒售罄,你抢到回家的票了吗? #
2385次浏览 52人参与
# 我现在比当时_,你想录用我吗 #
9631次浏览 131人参与
# 重来一次,我还会选择这个专业吗 #
411450次浏览 3898人参与
查看11道真题和解析
腾讯成长空间 6062人发布