컴파일러

생성한 기계어의 짧은 나열을 작은 창으로 보면서, 불필요한 명령의 조합을 더 좋은 명령으로 대체하는 최적화를 무엇이라고 하는가?

  1. A피프홀 최적화
  2. B링크 시 최적화
  3. C프로파일을 이용한 최적화
정답과 해설 보기

정답: A. 피프홀 최적화

피프홀 최적화는 작은 구멍(피프홀)으로 들여다보듯 연속된 몇 개의 명령만 보고, 낭비를 찾아 대체하는 최적화입니다. 예를 들어 값을 메모리에 쓴 직후에 같은 곳에서 읽는 명령을 생략하거나, 0을 더하는 명령을 지우거나, 두 개의 명령을 하나의 명령으로 합칩니다. 코드 생성 후에 하는 경우가 많으며 단순하지만 효과가 있는 최적화입니다. 링크 시 최적화는 프로그램 전체를, 프로파일을 이용한 최적화는 실행 기록을 사용하여 최적화합니다.

  • A. 올바릅니다. 몇 개 명령의 창으로 낭비를 찾아 대체합니다.
  • B. 링크 시 최적화는 프로그램 전체를 한꺼번에 최적화합니다.
  • C. PGO는 실행 기록을 사용하여 최적화합니다.
이 분야 연습하기 분야로 돌아가기

컴파일러의 다른 문제

  1. 위의 코드에서 sq를 인라인 전개한 뒤 이어서 효과를 내는 최적화와 그 결과로 올바른 것은 무엇인가?
  2. 소프트웨어 파이프라이닝에 대한 설명으로 올바른 것은 무엇인가?
  3. 컴파일러가 부동소수점 수의 덧셈 (a + b) + c를 엄격한 설정에서는 a + (b + c)로 마음대로 재배열하지 않는 이유로 올바른 것은 무엇인가?
  4. 컴파일러의 자동 벡터화에서 사용되는 명령의 종류로 올바른 것은 무엇인가?
  5. 컴파일러 최적화가 지켜야 하는 기본 조건으로 올바른 것은 무엇인가?

이 분야의 비교