2

ハッシュキーからビット文字列への辞書があります。ビット文字列は可変長にすることができますが、通常は 160 ビット未満で、通常は 80 ビット未満です。約 80M のキーと値のペアがあります。

このデータ構造をできるだけ少ないメモリに格納するにはどうすればよいですか? ビット文字列をパディングしたくありません。そうしないと、かなりのスペースが失われます (しゃれは意図されていません)。

ビット文字列の長さを示すために、最初にバイトを格納する必要があると思います。大丈夫。

このdictをメモリに保存する最もメモリ効率の良い方法は何ですか?

私は Python を使用したいと考えていますが、他の選択肢も受け入れています。

4

1 に答える 1

0

ビット文字列を整数のバイト数にパディングすることを参照している場合、最初のすべてのビット文字列の連結を単一のビット文字列に格納し、値が形式のタプルである辞書を保持できます(bit position, length)

問題は、計算を正しく行った場合、この大きなビット文字列の長さが 120 億ビットを超えるbit position可能性があることintです。次に、ビット位置自体をパディングする必要がある場合は、振り出しに戻ります。

ただし、異なる長さの数が 64 未満の場合は、長さフィールドを 6 ビットに収めることができ、ハッシュ キーを単一のビット文字列にインデックス付けされた 5 バイトのタプルにマッピングする辞書になります。これはうまくいきますか?

于 2011-11-08T09:41:20.963 に答える