<aside> 💡
이전의 설명에서,
'반복문이 실행될 때 마다 테스트 조건을 매번 평가해야 한다’
라는 내용 존재 (3.6.7절
)
</aside>
Before
출처 : CSAPP p.535
After
출처 : CSAPP p.537
문제점
combine1
은 반복문의 조건에 vec_length(v)
를 계속해서 호출특징
vec_length(v)
즉 [벡터 길이]는 불변값해결
효과
출처 : CSAPP p.536
<aside> 💡
Code Motion
위와 같이, 결과가 변하지 않는 연산을 루프 밖으로 이동시켜 호출 횟수 최소화하는 최적화 기법
</aside>
<aside> 💡
lower1의 문제
</aside>
strlen(s)
를 호출 → 문자열 길이 계산을 O(n)
으로 수행O(n)
→ 총 시간 복잡도 O(n^2)