lua-记录
lua-记录
前篇
- a
最大整数
默认编译的
在大多数编译器上,Number是double
,这是IEEE 64位浮点数。这意味着10位指数,因此最大数量大约是2 ^ 1024,或5.6e300年。那是很长一段时间。
现在,如果你正在递增它,你可能对整数范围更感兴趣。 52位尾数意味着可以使用整数精度的最高数字是2 ^ 52,大约4.5e15。在31’557,600秒/年,这是1.427e8,接近1.5亿年。任何过程的运行时间仍然很长
lua table 的最大容量
table由数组部分和哈希表部分组成,table的容量也就等于数组容量与哈希表容量之和。table的一切秘密都可以到ltable.c中挖掘,table的极限容量也是如此:
1 | /* |
由上述宏定义可知,table的数组部分最大容量是 2的MAXABITS次方,这个值的大小取决于int的字节数:int是32位,table的数组部分最大容量就是2的31次方;int是64位,table的数组部分最大容量就是2的63次方。
1 | /* |
由上述宏定义和注释可知,table的哈希表部分最大容量只有数组部分最大容量的一半。注意,这里说的哈希表容量并不代表哈希表可以存储元素的数量,而是指实现哈希表的数组的最大容量,哈希表的实现方法的不同,哈希表存储元素的数量上限也就不同(链接法、开放寻址法)。
table的数组最大容量与哈希表最大容量之和能够用unsigned int表示。可以这样简单地记忆table的最大容量:最大unsigned int的一半就是数组部分的最大容量,数组部分最大容量的一半就是哈希表部分的最大容量。