2011-11-08 6 views
2

私はあるハッシュキーからビットストリングまでを知っています。ビットストリングは可変長ですが、一般に< 160ビット、通常は<80です。私は約80Mのキー値のペアを持っています。ビットストリング値を含むdictをパディングせずにメモリに格納できますか?

できるだけ少ないメモリにこのデータ構造を保存するにはどうすればよいですか?私はビットストリングをパッドしたくない、またはかなりのスペースを無駄にする(何も意図していない)。

ビットストリングの長さを示す最初のバイトを格納する必要があると仮定します。大丈夫。

メモリにこのdictを格納する最もメモリ効率のよい方法は何ですか?

私はPythonを使いたいと思っていますが、他の選択肢もあります。

答えて

0

ビットストリングを整数のバイト数にパディングすることを指している場合は、すべての最初のビットストリングの連結を1つのビットストリングに格納し、値が(bit position, length)のタプルの辞書を保持することができます。

問題は、私が数学を正しく実行した場合、この大きなビットストリングの長さは120億ビットを超える可能性があるため、bit positionにはint以上のビットが必要です。次に、ビット位置をパディングする必要がある場合は、正方形に戻ります。

ただし、別の長さの数が< 64の場合は、長さフィールドを6ビットに収めることができます。また、ハッシュキーを5バイトタプルにマップすることで、1つのビット列にインデックスを付けることができます。これはあなたのために働くでしょうか?

関連する問題