나는 내 경우에 word-->document_id
"역 색인"역할을하는 python dict의 메모리 소비를 줄이려고합니다. 각각 word
은 24 바이트를 차지하는 정수로 해쉬됩니다.int 대신에 bitarray를 사용하여 dict의 메모리 절약?
각 요소를 dict
의 값과 dict
내의 각 키를 비트 배열로 변환 할 수 있는지 궁금합니다. 난 어떤 최대 값이 int
보다 작은 것으로 나타났습니다 2^22
보다, 그래서 난 그냥 "크기 22"의 비트 배열을 할당 할 수 있습니다.
어떻게이 작업을 수행 할 수 있습니까? 지금까지 gmpy2
과 bitarray
라이브러리, 그리고 Cython과 함께 사용할 수있는 C++ stdlib의 std::bitset
을 보았습니다. 나는이 post에서 bitarray
이 gmpy
만큼 빠르지 않다는 것을 읽었습니다. gmpy
에서 크기를 설정하는 방법을 모르겠습니다. 마지막으로 파이썬에서 gmpy
또는 bitarray
개체의 메모리 오버 헤드가 가치가 있는지 궁금합니다. std::bitset
을 사용할 수 있습니다.
C 타입의'unsigned int '를 저장하기 위해'std :: unordered_map'을 사용할 수 있습니다. 그러나 당신은 bitarrays없이 그것을 구현하는 것이 더 낫다는 것을 말하고 있습니다 ..? – richizy
@richizy : Bitarrays가 도움이되지 않습니다. 나는'unordered_map'이 당신의 가장 좋은 장면이라고 생각합니다. – user2357112
괜찮습니다. 파이썬 기본 요소에 대한 메모리 참조가 얼마나 미친 것인지 알지 못했습니다. – richizy