私は現在、可能な限り優れたパフォーマンスを発揮する必要のあるアプリケーションを作成しています。IDE(およびコンパイラ)としてVS2012を使用しています。
ベクトルを反復処理しているときに、イテレータとは対照的にポインタソリューションの方が速度の点ではるかに高速であることに気付きました。何故ですか?つまり、イテレータは基本的に同じものです。少なくともそうあるべきです。
この例を見てください:
std::vector<int> v;
for (std::vector<int>::iterator it = v.begin(); it != v.end(); it++) {
// Do stuff with *it
}
for (int* i = &v[0], i <= &v[v.size()-1]; i++) {
// Do stuff with *i
}
コンパイラに必要な最適化はありますか?私はすべての標準設定を使用しているので、-O2はすでに有効になっています。前もって感謝します。
編集: 私はリリースでコンパイルしていて、Ctrl + F5で実行しています(デバッグなしで)。
EDIT2: 実際のソースコードはクイックソートの実装です。ここに完全なソースへのリンクがあります、その非常に短いのでそれをチェックしてください。