컴파일러

JIT 컴파일을 사용하는 실행 환경의 특징으로 올바른 것은?

  1. A프로그램을 실행하기 전에 모든 것을 기계어로 번역한 뒤 배포한다
  2. B실행 중에 자주 쓰는 부분을 기계어로 만들고 실행 시의 정보도 활용할 수 있다
  3. C기계어를 전혀 사용하지 않고 언제까지나 바이트코드를 한 명령씩 해석한다
정답과 해설 보기

정답: B. 실행 중에 자주 쓰는 부분을 기계어로 만들고 실행 시의 정보도 활용할 수 있다

JIT 컴파일에서는 처음에는 바이트코드를 해석하면서 실행하다가, 여러 번 실행되는 부분(핫스폿)을 발견하면 실행 중에 그 부분을 기계어로 컴파일합니다. 실제로 지나가는 분기나 전달되는 타입 같은 실행 시의 정보를 활용하여, 사전에 하는 컴파일로는 어려운 과감한 최적화를 할 수 있습니다. 가정이 빗나가면 해석 실행으로 되돌아가는 구조도 갖추고 있습니다. 사전에 모든 것을 번역하는 것은 사전(AOT) 컴파일, 해석만 계속하는 것은 순수한 인터프리터입니다.

  • A. 실행 전에 모두 번역하는 것은 사전(AOT) 컴파일입니다.
  • B. 올바릅니다. 실행 중에 기계어로 만들고 실행 시의 정보도 활용할 수 있습니다.
  • C. 해석만 계속하는 것은 순수한 인터프리터입니다.
이 분야 연습하기 분야로 돌아가기

컴파일러의 다른 문제

  1. LLVM의 기본 구성으로 올바른 것은?
  2. 컴파일러의 최적화 수준을 지정하는 옵션에서 최적화를 하지 않는 설정(-O0 등)이 자주 사용되는 상황은?
  3. 프로파일을 이용한 최적화(PGO)에 대한 설명으로 올바른 것은?
  4. 링크 시 최적화(LTO)로 가능해지는 최적화로 가장 적절한 것은?
  5. C 언어에서 부호 있는 정수의 오버플로는 미정의 동작이다. 이 전제에서 위의 함수를 최적화하는 컴파일러가 생성할 수 있는 코드로 올바른 것은?

이 분야의 비교