配列が別の方法でアクセスされるループを最適化するコンパイラを設計することは可能ですか?たとえば、次のようになります。
// int[] a,b
int sum = 0;
for(int i = 0; i < n; i++)
{
sum += a[i] + b[i];
}
通常のシーケンシャルアレイ装置と、a[i]及びb[i]互いに離れメモリであってもよいです。したがって、優れたコンパイラ最適化はそれを検出しa[i]、b[i]常に「同時に」アクセスされることを検出し、インターリーブされた配列を格納します。a[0] b[0] a[1] b[1] ...つまり、1つのメモリアクセスでa[i]との両方を取得できますb[i]。
a[i]し、b[i]一つのメモリ操作で取得することが、彼らは近くの優れたキャッシュ・パフォーマンスのためにメモリに配置されたこと。