É possível projetar um compilador que otimiza um loop no qual matrizes são acessadas de maneira alternativa? Por exemplo, assim:
// int[] a,b
int sum = 0;
for(int i = 0; i < n; i++)
{
sum += a[i] + b[i];
}
Com o armazenamento seqüencial usual do array a[i]e b[i]podem estar distantes um do outro na memória. Portanto, acho que uma boa otimização do compilador detectaria isso a[i]e b[i]sempre será acessada no "mesmo tempo" e armazenaria as matrizes intercaladas, ou seja, a[0] b[0] a[1] b[1] ...para que um acesso à memória possa recuperar ambos a[i]e b[i].
a[i]e b[i]seja recuperado com uma operação de memória, mas eles estavam localizados nas proximidades na memória para melhor desempenho do cache.