Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个从一些哈希键到位串的字典。位串可以是可变长度,但通常 < 160 位并且通常 <80。我有大约 80M 键值对。
如何将这个数据结构存储在尽可能少的内存中?我不想填充位串,否则我会失去相当多的空间(不是双关语)。
我假设我必须在开头存储一个字节,给出位字符串的长度。没关系。
将此字典存储在内存中的最节省内存的方法是什么?
我更喜欢使用 Python,但对其他选择持开放态度。
如果您指的是将位串填充到整数字节,那么您可以将所有初始位串的串联存储在一个位串中,并保留一个字典,其值是形式的元组(bit position, length)。
(bit position, length)
问题是,如果我的数学计算正确,那么这个较大的位串的长度可能超过 120 亿位,因此bit position需要在int. 然后,如果您需要自己填充位位置,我们将回到第一方。
bit position
int
但是,如果不同长度的数量小于 64,则可以将长度字段放在 6 位中,最终得到一个字典,将哈希键映射到索引到单个位串中的 5 字节元组。这对你有用吗?