ハッシュ値のユニーク性判定

100億個もできるのでどうしようかという話。めも:100億B=9.31GB。ハッシュ値は64bitなので、バイナリで保管しても74.48GBとなる。メモリ上でやるとかっこよす!なのだが、今は分散環境がないので難しい。なので、ハッシュ値を全部はき出してsort&uniqueするのが現実的かなぁと思うところ。まともにやるとお亡くなりになるので、まずは1GBくらいずつ別々のファイルにハッシュ値を出力。それぞれをソート。その後merge&uniqueとなるわけだけど、実は今回は衝突した値と回数だけ分かれば良いので、mergeする必要がない。なので、分割したファイルを全部mergeしていくふりをしながらuniquenessを見ていけば良いわけです。

でも一回のテストあたり何分くらいかかるんだるお。あと10日しかないですよ。メモリ16GB、8コア+RAID5のマシンなので、性能をフル活用して頑張るしかない。あとはどのくらいのサイズでファイルを分割するとソートの効率が良いんだろうとかその辺の計算だなぁ。