【发布时间】:2013-01-17 08:39:54
【问题描述】:
我想知道 Perl 哈希数据结构可以容纳多少元素是否有限制?我假设它可能取决于您有多少可用内存。值和键大小与它可以容纳多少元素有关吗?
【问题讨论】:
-
您心中有一个您关心的项目吗?您是否担心 10,000 个密钥可能会用完空间? 10,000,000 把钥匙?
-
是的,我的数据有 500 亿个元素。
我想知道 Perl 哈希数据结构可以容纳多少元素是否有限制?我假设它可能取决于您有多少可用内存。值和键大小与它可以容纳多少元素有关吗?
【问题讨论】:
没有琐碎的固定上限。这取决于系统中可用的内存。如果散列的键较大,则内存不足的速度会比它们较小时更快。与哈希中的值类似;它们越大,内存越快耗尽。
通常,适合散列的元素数量是您的问题中最少的;如果你的内存用完了,你可能应该重新考虑你的算法。
【讨论】:
sv.h、hv.h 和 perl.h 中搜索代码,但如果您之前没有研究过代码,您很快就会被这些变化弄糊涂。有一个 32 位无符号值存储键值的散列,但散列冲突似乎不太可能导致问题(散列中的 40 亿个不同键总共需要大量内存,即使这些值是每个只有一个字节)。