Interested Article - Слияние циклов

Слияние циклов (объединение циклов, англ. loop fusion , англ. loop jamming ) — оптимизация компилятора , выполняющая объединение нескольких циклов , смежных в дереве циклов, в один. Преобразование возможно, если циклы имеют одинаковое количество итераций и не зависят друг от друга . Слияние циклов может повысить локальность данных , что повышает эффективность работы кэша .

Слияние циклов не всегда сокращает время исполнения программы. На некоторых архитектурах может оказаться более выгодным исполнить два цикла вместо одного объединённого, так как, например, локальность данных в таком случае может оказаться выше. В таких случаях, может применяться обратная оптимизация, разложение циклов , которая расщепляет один цикл на несколько.

Примеры

int i, a[100], b[100];
for (i = 0; i < 100; i++)
	a[i] = 1;                     
for (i = 0; i < 100; i++)
	b[i] = 2;

эквивалентно:

int i, a[100], b[100];
for (i = 0; i < 100; i++)
{
	a[i] = 1; 
	b[i] = 2;
}

Примечания

  1. Manjikian, N., Abdelrahman, T.S. от 1 апреля 2011 на Wayback Machine
  2. Штейнберг Б.Я., Штейнберг О.Б., Василенко А.А.

Ссылки

Источник —

Same as Слияние циклов