• 최근 바뀜
  • 임의 문서
  • 게시판
    위키방자유게시판이슈 트래커
  • 도구
    특수 문서 목록업로드
  • 도움말
    개요위키 문법TeX 문법이슈 트래커
  • 최근 바뀜
  • 최근 토론
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
더 보기
  • 신규 사용자분께서는 리브레 위키:환영합니다 필독해주세요.
  • 가입 후 지속적인 기여는 위키에 큰 도움이 됩니다.
  • 로그인이 잘 되지 않을 경우 여기에서 로그인해주세요.
편집토론기록
새로 고침주시여기를 가리키는 문서정보

Just-in-time 컴파일

분류:
  • 컴퓨터 프로그래밍

Just-in-time compilation, 줄여서 JIT 컴파일이라고 부른다. 동적 번역(dynamic translation)이라고도 하며, 이 방식을 구현한 프로그래밍 언어 구현체도 흔히 JIT 컴파일러라고 일컫는다. 프로그래밍 언어 구현 방법의 하나로, 주로 인터프리터의 성능을 개선하기 위한 방법이다.

인터프리터 구현으로 실행하는 프로그램은 실행 중에 프로그램 코드를 해석하면서 진행하기 때문에, 컴파일러 구현으로 한 번에 번역한 프로그램을 실행하는 것보다 실행 속도가 느려지는 단점이 있다. 이 단점은 루프와 같이 같은 코드를 반복적으로 실행할 때 특히 두드러지는데, 심한 경우에는 루프를 돌 때마다 매번 문법 트리 파싱부터 새로 하는 대삽질을 벌일 수도 있다. 따라서 언어 구현자들은 반복적으로 도는 코드만 골라서 최적화를 하면 어떨까 하는 발상을 떠올렸고, 그걸 구현한 것이 JIT 컴파일이다.

JIT 컴파일러는 보통의 인터프리팅 과정을 수행하면서, 실행하는 코드들의 실행 횟수를 실시간으로 프로파일링한다. 그리고 특별히 많이 실행된다 싶은 코드가 발견되면 해당 코드를 "즉시(just in time)" 기계어 코드로 컴파일한다. 지금까지 많이 실행됐던 코드들은 앞으로도 많이 실행될 가능성이 높기에, 다음부터 그 부분을 실행할 때는 훨씬 빠른 기계어 코드를 대신 실행할 수 있게 된다.

주요 구현체[편집]

  • Java의 HotSpot VM
  • 안드로이드의 ART(Android RunTime)
  • .NET의 .NET Common Language Runtime (CLR)
  • Python의 PyPy
  • Lua의 LuaJIT
  • JavaScript의 주요 구현들: V8, SpiderMonkey, JavaScriptCore
  • 이 문서는 2020년 10월 19일 (월) 00:21에 마지막으로 편집되었습니다.
  • 모든 텍스트는 크리에이티브 커먼즈 저작자표시-동일조건변경허락 3.0에 따라 사용할 수 있습니다.

    운영관련 문의 : ops@librewiki.net | 권리침해 문의 : support@librewiki.net
  • 개인정보 정책
  • 리브레 위키 소개
  • 면책 조항
  • 이용약관
  • 크리에이티브 커먼즈 저작자표시-동일조건변경허락 3.0
  • Powered by MediaWiki
  • Designed by Librewiki

로그인

리브레 위키에 가입하세요 비밀번호를 잊으셨나요?
다른 방법으로 로그인하기