Рубрики

Разматывание петли

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

Программа 1:

// Эта программа не использует развертывание цикла.
#include<stdio.h>

  

int main(void)

{

    for (int i=0; i<5; i++)

        printf("Hello\n"); // распечатать привет 5 раз

  

    return 0;

Программа 2:

// Эта программа использует развертывание цикла.
#include<stdio.h>

  

int main(void)

{

    // развернул цикл for в программе 1

    printf("Hello\n");

    printf("Hello\n");

    printf("Hello\n");

    printf("Hello\n");

    printf("Hello\n");

  

    return 0;

Выход:

Hello
Hello
Hello
Hello
Hello

Иллюстрация:
Программа 2 более эффективна, чем программа 1, поскольку в программе 1 необходимо проверять значение i и увеличивать значение i при каждом цикле. Таким образом, небольшие циклы, подобные этому, или циклы, в которых задействовано фиксированное количество итераций, могут быть полностью развернуты, чтобы уменьшить издержки цикла.

Преимущества:

  • Увеличивает эффективность программы.
  • Уменьшает накладные расходы цикла.
  • Если операторы в цикле не зависят друг от друга, они могут выполняться параллельно.

Недостатки:

  • Увеличен размер кода программы, что может быть нежелательно.
  • Возможно увеличение использования регистра за одну итерацию для хранения временных переменных, что может снизить производительность.
  • Помимо очень маленьких и простых кодов, развернутые циклы, которые содержат ветви, даже медленнее, чем рекурсии.

Ссылка:
https://en.wikipedia.org/wiki/Loop_unrolling

Эта статья предоставлена Суровым Агарвалом . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

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

Рекомендуемые посты:

Разматывание петли

0.00 (0%) 0 votes