Расщепление цикла

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Расщепление цикла (англ. Loop splitting) — оптимизация компилятора, которая пытается упростить цикл или устранить зависимости в цикле, разбив его на несколько частей, имеющих одно и то же тело исходного цикла и различные диапазоны счётчика.

Например, следующий код:

int p = 10;
for (int i=0; i<10; ++i)
{
  y[i] = x[i] + x[p];
  p = i;
}

в результате применения оптимизации преобразовывается в:

y[0] = x[0] + x[10];
for (int i=1; i<10; ++i)
{
  y[i] = x[i] + x[i-1];
}


Новый код эквивалентен предыдущему, однако устраняет необходимость в переменной р внутри тела цикла.

Впервые данная оптимизация появилась в GCC версии 3.4.

Примечания[править | править вики-текст]

Литература[править | править вики-текст]