Lua table,如果key从1000开始,会不会有性能损失?
Lua table, if the key starts from 1000, will there be a performance loss?
a={}
a[1000]=1
我不定义其他东西。 1到999的存储空间space会被占用吗?
我知道a[1]=nil
或a[999]=nil
,遍历时会从1到1000依次计算吗?
不,不会为其他 (1-999) 个元素分配 space(除非您创建 1000 个元素然后删除 1-999)。 Lua 支持“稀疏”数组,并将使用 table 的散列部分来存储那些 key/value 对。
如果您问如果不存在 1-999 个元素,a[1000]
是否会变慢,那么这是有可能的,因为在这种情况下 table 的散列部分将会变慢被使用(而不是数组部分),但你必须进行基准测试,看看是否有任何可观察到的差异对你的情况很重要。
a={}
a[1000]=1
我不定义其他东西。 1到999的存储空间space会被占用吗?
我知道a[1]=nil
或a[999]=nil
,遍历时会从1到1000依次计算吗?
不,不会为其他 (1-999) 个元素分配 space(除非您创建 1000 个元素然后删除 1-999)。 Lua 支持“稀疏”数组,并将使用 table 的散列部分来存储那些 key/value 对。
如果您问如果不存在 1-999 个元素,a[1000]
是否会变慢,那么这是有可能的,因为在这种情况下 table 的散列部分将会变慢被使用(而不是数组部分),但你必须进行基准测试,看看是否有任何可观察到的差异对你的情况很重要。