プログラムの性能を分析します。パラダイム、言語、アルゴリズムの選択にも有用です。
プログラムの性能を分析します。パラダイム、言語、アルゴリズムの選択にも有用です。
「+=または+を使用しており、効率の良い処理を選択しているとはいえない。論文にはJavaでは
StringBuilderやStringBufferといったミュータブルなデータ型を使用すれば結果が大幅に改善する」
メモリー上で処理するよりもディスクに直接書き込む方が高速? | スラッシュドット・ジャパン デベロッパー
http://developers.slashdot.jp/story/15/03/28/0747218/
2015年03月28日 18時12分
ゲームエンジンアーキテクチャ第二版
「しかし、値が使われる場合、CPUのパイプラインでストールを生じさせないので、
ポストインクリメントの方が優秀である。したがって、
プレインクリメントの動作が絶対に必要である場合を除いて、
必ずポストインクリメントを使う習慣を身につけたほうがよい」
考察
「ストールは本来、このインクリメントに限らず、データ依存性を持つあらゆるシチュエーション
で発生する恐れがあります。条件分岐、値の更新など、結果を待たなければ先の処理が行えないケース
が発生するたびストールは起こりえます。分岐予測など、ストールが実質的に無くなるような工夫
ももちろん行われているのですが、予測が外れた場合には、事前準備の甲斐なく、やっぱりストールします(中略)
後置インクリメントはインクリメントの結果を待たなくても、戻り値のオブジェクトは決定しているので
そのオブジェクトに対する処理はインクリメントの動作と並行して行えるよね。ならストールしない(中略)
int、もしくはSTLのイテレータに対してではないでしょうか。
その場合、やはり先程の検証でもあったように、コンパイラの素晴らしい最適化により、
前置と後置のコストの違いは限りなく少なくなります」
前置インクリメント vs 後置インクリメント | 闇夜のC++
http://cpp.aquariuscode.com/preincriment-vs-postincriment
2015年4月13日