루프 언 롤링을 통해 성능에 매우 중요한 코드 (몬테카를로 시뮬레이션 내에서 수백만 번 호출되는 빠른 정렬 알고리즘)를 최적화하려고했습니다. 속도를 높이려는 내부 루프는 다음과 같습니다.
// Search for elements to swap.
while(myArray[++index1] < pivot) {}
while(pivot < myArray[--index2]) {}
나는 다음과 같이 풀어 보았습니다.
while(true) {
if(myArray[++index1] < pivot) break;
if(myArray[++index1] < pivot) break;
// More unrolling
}
while(true) {
if(pivot < myArray[--index2]) break;
if(pivot < myArray[--index2]) break;
// More unrolling
}
이것은 전혀 차이가 없었기 때문에 더 읽기 쉬운 형식으로 다시 변경했습니다. 나는 루프 언 롤링을 시도한 다른 시간에도 비슷한 경험을했습니다. 현대 하드웨어에서 분기 예측 자의 품질을 고려할 때 루프 언 롤링이 여전히 유용한 최적화일까요?