私はこれらの C++ ライブラリの多くに慣れていないので、私の質問が素朴であると感じた場合はご容赦ください。
それぞれ約 160 MB (それぞれ約 700000 行) の 2 つの大きなテキスト ファイルがあります。file1 に表示されるすべての重複行を file2 から削除する必要があります。これを実現するために、32 文字の文字列をキーとして unordered_map を使用することにしました。32 文字の文字列は、各行の最初の 32 文字です (これは行を一意に識別するのに十分です)。
とにかく、基本的には最初のファイルを調べて、各行の 32 文字の部分文字列を unordered_map にプッシュするだけです。次に、2 番目のファイルを調べて、file2 の行が unordered_map に存在するかどうかを確認します。存在しない場合は、行全体を新しいテキスト ファイルに書き込みます。
これは、小さなファイル (それぞれ 40 MB) では問題なく機能しますが、この 160 MB のファイルでは、ハッシュテーブルに挿入するのに非常に時間がかかります (file2 を見始める前に)。約 260,000 回の挿入で..停止したか、非常に遅くなったようです。メモリの限界に達した可能性はありますか? もしそうなら、誰かがこれを計算する方法を説明できますか? そうでない場合、それを高速化するために他にできることはありますか? カスタムハッシュ関数を選択したり、最適化に役立ついくつかのパラメータを指定したりしますか?
ハッシュ テーブルへのキー オブジェクト ペアは (string, int) で、文字列の長さは常に 32 文字で、int は重複を処理するために使用するカウントです。12 GB RAM を搭載した 64 ビット Windows 7 OS を実行しています。
どんな助けでも大歓迎です..みんなありがとう!!