더북(TheBook)

2.1.5 최적화

사용자 프로그램이 의미하는 바를 파악하고 나면, 시맨틱은 같지만 더 효율적으로 구현한 다른 프로그램으로 자유로이 갈아 끼울 수 있다. 즉, 프로그램을 최적화할(optimize) 수 있다. 간단한 예로 상수 폴딩(constant folding)이 그렇다. 항상 꼭 같은 값으로 평가되는 표현식을 컴파일 타임에 미리 평가해서 표현식 코드를 그 결괏값으로 대체하는 기법이다. 가령, 사용자가 다음 코드처럼 입력했다고 하자.

pennyArea = 3.14159 * (0.75 / 2) * (0.75 / 2);

컴파일러는 이 산술식을 모두 계산하여 코드를 이렇게 바꾼다.

pennyArea = 0.4417860938;

최적화는 프로그래밍 언어 업계에서 막대한 비중을 차지한다. 많은 언어 해커들이 이 분야에 자신의 인생을 걸고 컴파일러 성능을 한 방울이라도 쥐어 짜내서 몇 %라도 더 빨라진 벤치마크 결과를 얻으려고 애를 쓴다. 강박증에 걸리기 십상인 직업이다.

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