8.7 루프 언롤링(Loop unrolling)

8.7 루프 언롤링(Loop unrolling)

Haxe 4.0.0 이후

컴파일러는 상수 범위에 대한 짧은 반복의 for 루프를 언롤하려고 합니다. 루프 없이 더 빠른 코드를 만들 수 있어요:

for (i in 0...4) {
  test(i);
}

위 코드는 다음과 비슷한 것으로 바뀝니다:

test(0);
test(1);
test(2);
test(3);

루프가 언롤되는지 여부는 루프의 반복 수와 루프 본문 안의 표현식 수로 정의되는 루프 언롤링 비용에 따라 다릅니다. 이 임계값은 기본적으로 250이지만 -D loop_unroll_max_cost=... 컴파일 타임 define으로 구성할 수 있어요.

출처: Loop unrolling

본문

컴파일러는 상수 범위의 짧은 for 루프를 언롤해 더 빠른 코드를 만듭니다. 언롤 여부는 반복 수 x 본문 표현식 수 비용(기본 임계값 250)에 따라 달리지고 -D loop_unroll_max_cost로 조정합니다.

더 알아보기