【发布时间】:2014-03-19 01:47:46
【问题描述】:
我正在尝试减少 python dict 的内存消耗,在我的情况下,它用作word-->document_id“倒排索引”。每个word 被散列为一个整数,占用24 个字节。
我想知道是否可以将dict 的值中的每个元素和dict 中的每个键转换为位数组。我注意到遇到的任何int 的最大值都小于2^22,所以我可以只分配一个“大小为22”的位数组。
如何做到这一点?到目前为止,我已经在 C++ 标准库中看到了 gmpy2 和 bitarray 库,以及 std::bitset,我可以将它们与 Cython 一起使用。我从这个post 读到bitarray 不如gmpy 快。在gmpy,我不确定如何设置大小。最后,我想知道 Python 中 gmpy 或 bitarray 对象的内存开销是否值得,因为我可以只使用 std::bitset,它可能使用的内存最少。
【问题讨论】:
标签: python c++ cython bitset bitarray