더북(TheBook)

5.1.4 최적화

추상 상태 기계에 명시된 내용을 구체적으로 실행하는 방식은 컴파일러 제작자의 재량으로 결정된다. 최신 C 컴파일러는 프로그램 코드에는 좀 다르게 코드를 생성하는 경향이 있다. 추상 상태 기계의 관측 가능한 상태를 벗어나지 않는 범위에서 코드를 최대한 짧게 만든다. 예를 들어 다음 코드처럼 상수 값을 연달아 더하는 경우를 살펴보자.

x += 5;
/* x를 건드리지 않는 다른 작업을 수행한다. */
x += 7;

이 코드를 다음과 같이 처리하는 컴파일러가 많다.

/* x를 건드리지 않는 다른 작업을 수행한다. */
x += 12;

또는 다음과 같이 처리할 수도 있다.

x += 12;
/* x를 건드리지 않는 다른 작업을 수행한다. */

컴파일러는 결과의 차이점이 겉으로 드러나지 않는 범위에서 얼마든지 실행 순서를 변경한다. 예를 들어 x의 중간값을 출력하지 않는 한, 그리고 그 중간값을 다른 연산에 사용하지 않는 한 실행 순서를 바꿀 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.