ファイル(約50万件)から数字を読み込んでデータ構造に挿入するプログラムを作成しました。数字は区別されます。 私は。std::make_pair(myNumber, emptyStruct))
を使用して別の構造体(とunordered_mapへの挿入に時間がかかりすぎる
をunordered_map
に数字を挿入していますそして、すべての数字を挿入した後、私は数百の時間を検索し、それを使用しています。私は、までDSを削除することはありませんプログラムの実行が終了しました
プロファイリング後、挿入操作に実行時間の約50%がかかることに気付きました(挿入の回数だけ実行される他のコードもありますが、時間がかかる)
リサイズに時間がかかると思ったので、私は500,000でリザーブ機能を使用しましたが、結果は同じです。
私の知る限り、このDSはO(1)の挿入と検索でなければならず(トレードオフは大きなメモリです)、挿入に時間がかかる理由はわかりません。結果を改善するにはどうすればよいですか?
これは、挿入ごとにO(1)*です。 n個の挿入はまだO(n)です。 –
私は同意します。それは妥当と思われる。挿入は高価になるだろう。最初に比較する値をロードしてから、入力ファイルに移動します。 – dmg
さて、あなたは 'unordered_map'に50%分を入れるべきであること以外にも、他の処理を行うことができます。 「あまりにも多くの時間」はどれくらいですか?マップに50万の要素を挿入するのに適切な時間はどれくらいでしょうか? – user2079303