루프 풀기

루프 언롤링은 프로그램의 실행 시간을 최적화하는 데 도움이 되는 루프 변환 기술입니다. 우리는 기본적으로 반복을 제거하거나 줄입니다. 루프 언롤링은 루프 제어 명령과 루프 테스트 명령을 제거하여 프로그램 속도를 높입니다. 프로그램 1: CPP
   // This program does not uses loop unrolling.   #include      int     main  (  void  )   {      for     (  int     i  =  0  ;     i   <  5  ;     i  ++  )      printf  (  'Hello  n  '  );     //print hello 5 times      return     0  ;   }      
프로그램 2: CPP
   // This program uses loop unrolling.   #include      int     main  (  void  )   {      // unrolled the for loop in program 1      printf  (  'Hello  n  '  );      printf  (  'Hello  n  '  );      printf  (  'Hello  n  '  );      printf  (  'Hello  n  '  );      printf  (  'Hello  n  '  );      return     0  ;   }      
Output:
Hello Hello Hello Hello Hello  
삽화: 프로그램 2는 프로그램 1보다 효율적입니다. 왜냐하면 프로그램 1에서는 루프를 돌 때마다 i 값을 확인하고 i 값을 증가시켜야 하기 때문입니다. 따라서 이와 같은 작은 루프나 반복 횟수가 고정된 루프는 완전히 펼쳐서 루프 오버헤드를 줄일 수 있습니다.

장점:

  • 프로그램 효율성을 높입니다.
  • 루프 오버헤드를 줄입니다.
  • 루프의 문이 서로 종속되지 않으면 병렬로 실행될 수 있습니다.

단점:

  • 바람직하지 않을 수 있는 증가된 프로그램 코드 크기.
  • 성능을 저하시킬 수 있는 임시 변수를 저장하기 위해 단일 반복에서 레지스터 사용이 증가할 수 있습니다.
  • 매우 작고 간단한 코드 외에도 분기를 포함하는 펼쳐진 루프는 재귀보다 훨씬 느립니다.
참조: https://en.wikipedia.org/wiki/Loop_unrolling 퀴즈 만들기

마음에 드실지도 몰라요