在字典中存储数百万到450,000个布尔值的最佳方法是什么,比如由长数索引的集合?我需要使用尽可能少的内存。 True和Int每个条目占用超过22个字节。每个布尔值的内存是否可以降低?
答案 0 :(得分:4)
检查this question。 Bitarray似乎是首选。
答案 1 :(得分:1)
这两个主要模块是bitarray和bitstring(我写了后者)。每个都会做你需要的,但每个都有一些加号和减号:
因此,这取决于您需要对数据执行的操作。如果它只是存储和检索,那么两者都可以,但对于性能关键的东西,如果可以的话,最好使用bitarray。看一下文档(bitstring,bitarray),看看你喜欢哪个。
答案 2 :(得分:0)
您是否考虑过使用混合列表/位串?
使用列表存储位的一维。每个列表项将保留一个固定长度的位串。您将使用列表将搜索集中在感兴趣的位串,然后使用该位串查找/修改您感兴趣的位。
列表应允许最有效地调用位串,位串应允许您尽可能高效地打包所有数据,并且混合列表/位串应允许速度之间的折中(访问时慢一些)列表)和存储(位打包数据加列表开销)。