私のプログラムには、並べ替える必要があるペアのベクトルがあります。次のようなもの:
std::vector<std::pair<int, uintmax_t> > temp;
...
std::sort(temp.begin(), temp.end());
いくつかの測定を行ったところ、要素のサイズが 16M を超えるベクトルの場合、Intel C++ コンパイラでコンパイルすると並べ替えに 3 秒かかり、GNU C++ コンパイラでコンパイルすると 25 秒かかることがわかりました。これは私には極端な違いのようです (GNU を使用すると 8 倍以上遅くなります)。
このプログラムを GNU C++ で高速化する方法を知っていますか?
私の構成は Intel 12.1.5 と GNU 4.7.1 です。残念ながら、プログラムの実行に使用するコンピューターにはスーパーユーザー権限がありません。
事前に助けてくれてありがとう、ダニエル。
編集:最適化フラグ -O3 はこの問題を解決しました。GNU C++ は現在 3 ~ 4 秒かかります。ヒントをありがとう、私は自分でそれを理解していないことを恥じています:(。したがって、この投稿がいつか他の誰かに役立つことを願っています:)。
参考までに、測定値内で最適化フラグを指定しませんでした(多分 -O2 は Intel と GNU の両方のデフォルトですか?).