Техника оптимизации под линуха

       

Вынос инвариантных ветвлений


Ветвления, инвариантные по отношению цикла, могут быть вынесены за его пределы, путем расщепления одного цикла на два или более. Размеры кода при этом возрастают, но и производительность увеличивается (конечно, при условии, что цикл влезает в кэш).

Покажем это на следующем примере:

for (i = 0; i < n; i++)

{

       for (j = 0; j < n; j++)

       {

              if (flag < 0x669) a[i][j]=i+j; else a[i][j]=0;

       }

}



Содержание раздела