컴파일러
컴파일러의 상수 폴딩의 예로 올바른 것은?
- A같은 함수를 여러 번 호출하는 부분을 1번의 호출로 합친다
- Bx = 3 * 4를 컴파일 시에 계산하여 x = 12로 만든다
- C루프의 본체를 4번 분량 나열하여 반복 횟수를 줄인다
정답과 해설 보기
정답: B. x = 3 * 4를 컴파일 시에 계산하여 x = 12로 만든다
상수 폴딩은 컴파일 시점에 값이 정해지는 식을 미리 계산하여 결과 상수로 치환하는 최적화입니다. 3 * 4는 실행할 때마다 같은 12가 되므로 실행 시에 곱셈을 할 필요가 없습니다. 상수 전파와 조합하면 변수를 거친 계산도 한꺼번에 폴딩할 수 있습니다. 부동소수점에서는 반올림 방식을 맞춰야 하는 등 주의할 점도 있습니다. 루프의 본체를 나열하는 것은 루프 전개이고, 함수 호출을 합치는 것은 다른 최적화입니다.
- A. 함수 호출을 합치는 것은 상수 폴딩이 아닙니다.
- B. 올바릅니다. 값이 정해지는 식을 미리 계산합니다.
- C. 본체를 나열하는 것은 루프 전개입니다.