ゲームエンジンアーキテクチャ第二版
「しかし、値が使われる場合、CPUのパイプラインでストールを生じさせないので、
ポストインクリメントの方が優秀である。したがって、
プレインクリメントの動作が絶対に必要である場合を除いて、
必ずポストインクリメントを使う習慣を身につけたほうがよい」
考察
「ストールは本来、このインクリメントに限らず、データ依存性を持つあらゆるシチュエーション
で発生する恐れがあります。条件分岐、値の更新など、結果を待たなければ先の処理が行えないケース
が発生するたびストールは起こりえます。分岐予測など、ストールが実質的に無くなるような工夫
ももちろん行われているのですが、予測が外れた場合には、事前準備の甲斐なく、やっぱりストールします(中略)
後置インクリメントはインクリメントの結果を待たなくても、戻り値のオブジェクトは決定しているので
そのオブジェクトに対する処理はインクリメントの動作と並行して行えるよね。ならストールしない(中略)
int、もしくはSTLのイテレータに対してではないでしょうか。
その場合、やはり先程の検証でもあったように、コンパイラの素晴らしい最適化により、
前置と後置のコストの違いは限りなく少なくなります」
前置インクリメント vs 後置インクリメント | 闇夜のC++
http://cpp.aquariuscode.com/preincriment-vs-postincriment
2015年4月13日