高速化プログラミング - ループ処理
同じ処理を少しずつ異なる条件で繰り返す「ループ処理」については、計算機の最も得意とする処理の一つであるが、適切に記述されていなければ処理時間が掛かってしまうことも多い。
このような観点からコンパイラにおいても最適化の対象とされる場合があり、どこまでコーディングで配慮して記述するかについてはコンパイラの最適化機能やCPUの特性などの知識が必要になる。

ループ処理については、次のような観点から最適化を行う。
ループの処理回数を減らすことを目的とする。
主に次の2つの方法がある。  高機能コンパイラでは最適化が行われたり、高性能CPUではレジスタ・リネーミングによるアウトオブオーダーにより同等の実行が行われる。またコード量が小さいほうがキャッシュに乗りやすいなどから、近年ではコーディング上で実施する意義は少なくなっている。むしろ処理の単位を一度に取得できる連続したデータ領域とする一種の「ループブロック化」において性能が向上する場合が多い。
 組込向けCPUなどでは8bitや16bit単位での処理とする場合が多い。  ループのタイル化ともいう。キャッシュバッファを前提とした構成として、ループ内でメモリアクセスが少なくなるよう考慮する。  同じループ範囲と回数を持つ複数のループを一つのループとすることで、ループのオーバーヘッドとメモリアクセスを減らす。

近年では計算機の構成において、多コアおよびキャッシュバッファの多段化・多容量化による性能向上を主眼としており、相対的に外部メモリへのアクセス性能が低下している。そのため、ループ処理におけるメモリアクセスの局所化・最小化により、処理時間が短縮できる場合が多くなっている。


関連リンク
ループ展開 Wikipedia
http://ja.wikipedia.org/wiki/%E3%83%AB%E3%83%BC%E3...

Duff's device
http://ja.wikipedia.org/wiki/Duff%27s_device