Показать меню

Перестановка циклов

Перестановка циклов (англ. Loop interchange) — оптимизация компилятора при которой меняется порядок итерационных переменных, относящихся к группе вложенных циклов. Итерационная переменная, используемая во внутреннем цикле, перемещается во внешний цикл, и наоборот. Это часто делается, чтобы гарантировать, что элементы многомерных массивов доступны в том порядке, в котором они хранятся в памяти, т.е. для улучшения локальности ссылок.

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

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

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

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

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

В то же время, как и любая другая оптимизация компилятора, данная оптимизация может привести к ухудшению производительности. Рассмотрим следующий пример:

for (int i=0; i<10; i++) { for (int j=0; j<20; j++) { a[i] = a[i] + b[j][i] * c[i] } }

Применение оптимизации в данном случае может улучшить производительность доступа к b[j][i], однако появятся повторные чтения a[i] и c[i] во внутреннем цикле в течение каждой итерации. В результате, эффективность работы может ухудшиться.

Еще по этой теме:
Схрейвер, Александр
Схрейвер, Александр
Александр (Лекс) Схрейвер (род. 1948) — нидерландский математик, известный своими работами по комбинаторной оптимизации, совмещающей алгоритмику и комбинаторику. На родине Схрейвер известен прежде
Коэффициент сетчатости
Коэффициент сетчатости
Коэффициент сетчатости — инвариант планарных графов, измеряющий число ограниченных граней графа по отношению к возможному числу граней других планарных графов с тем же числом вершин. Коэффициент
Auslogics Registry Defrag
Auslogics Registry Defrag
Auslogics Registry Defrag — это бесплатная утилита (только для частного использования), которая предоставляет пользователям мощный и простой в использовании инструмент для дефрагментации системного
Веб-разработка
Веб-разработка
Веб-разработка — процесс создания веб-сайта или веб-приложения. Основными этапами процесса являются веб-дизайн, вёрстка страниц, программирование на стороне клиента и сервера, а также
Камеральная обработка материала (часть 1)
Камеральная обработка материала (часть 1)
После завершения полевых работ и возвращения на основную базу приступают к камеральной обработке материала, собранного во время проведения почвенной съемки. Камеральный период состоит из нескольких
Условия почвообразования дерново-подзолистых почв (часть 2)
Условия почвообразования дерново-подзолистых почв (часть 2)
Хозяйственная деятельность. При сельскохозяйственном использовании освоенных дерново-подзолистых почв применяют следующие мероприятия: известкование, применение органических и минеральных удобрений,
Комментарии:
Добавить комментарий
Ваше Имя:
Ваш E-Mail: