Расщепление циклаРасщепление цикла (англ. loop splitting) — оптимизация компилятора, которая пытается упростить цикл или устранить зависимости в цикле, разбив его на несколько частей, имеющих одно и то же тело исходного цикла и различные диапазоны счётчика. Отслаивание циклаОтслаивание цикла (разгрузка цикла, от англ. loop peeling) является частным случаем расщепления цикла, при котором из основного цикла выносятся одна или несколько зависимых итераций. ПримерНапример, следующий код на языке Си: 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, и улучшилась в версии 7[1]. Примечания
Литература
|
Portal di Ensiklopedia Dunia