GO Map中可以存储的最大元素数量是多少?如果我需要经常访问Map中的数据,那么在长时间运行的程序中,继续向Map中添加项目并从中检索是一个好主意吗?
映射中元素的数量没有理论限制,但映射长度类型的最大值为int。的最大值int取决于您编译到的目标体系结构,1 << 31 - 1 = 2147483647在32位的1 << 63 - 1 = 9223372036854775807情况下,在64位的情况下,可能是最大值。
int
1 << 31 - 1 = 2147483647
1 << 63 - 1 = 9223372036854775807
请注意,作为实施限制,您可能无法完全添加max-int元素,但是数量级将相同。
由于内建map类型使用哈希图实现,因此访问时间复杂度通常为O(1),因此将许多元素添加到映射中是完全可以的,您仍然可以非常快速地访问元素。请注意,但是添加许多元素将导致内部结构的重新哈希和重建,这将需要一些额外的计算- 在向地图添加新键时可能偶尔发生。
map
如果您可以“猜测”或估计地图的大小,则可以创建具有很大容量的地图以避免重新散列。例如,您可以创建一个具有一百万个元素的空间的地图,如下所示:
m := make(map[string]int, 1e6)