JIT 컴파일: 두 판 사이의 차이

내용 삭제됨 내용 추가됨
Dleh428 (토론 | 기여)
JIT 컴파일 개요추가- 영어 위키 번역(링크 연결과 citation 연결 필요)
Dleh428 (토론 | 기여)
잔글 비문 수정
10번째 줄:
== 개요 ==
 
바이트코드 컴파일러는 소스 코드를 중간언어인 바이트코드로 변환한다. 바이트코드는 기계어는 아니지만 가상 머신에 의해 기계어로 손쉽게 변환할 수 있는 코드이다. JIT 컴파일러는 바이트코드를 읽어 빠른 속도로 기계어를 생성할 수 있다. 이런 기계어 변환은 코드가 실행되기 직전과정에 실시간으로 일어나며(그래서 Just-In-Time이다), 전체 파일을 컴파일할 수 있지만코드의 필요한 코드만부분만 변환할 수 있다변환한다. 기계어로 변환된 코드는 캐시에 저장되어저장되기 때문에 재사용시 컴파일을 하지않아도다시 재사용할 필요가 있다없다.
 
일반적인 인터프러터 언어(예시: cpython)는 바이트코드나 소스코드를 최적화 과정이 없기 번역하기 때문에 성능이 낮다. 반면 정적으로 컴파일하는 언어(예시: c 언어)는 실행 전에 무조건 컴파일을 해야하고해야하기 때문에 다양한 플랫폼에 맞게 컴파일을 이는하려면 시간이 오래 걸린다. ''동적 컴파일 환경''은 실행 과정에서 컴파일을 할 수 있기 위해 만들어졌다. JIT는 정적 컴파일러 만큼 빠르면서 인터프러터 언어의 빠른 응답속도를 추구하기 위해 사용한다. 바이트코드 컴파일러가 시간이 많이 소요되는 최적화를 미리 해주기 때문에 바이트코드에서 기계어 번역은 훨씬 빠르게 진행될 수 있다. 또한 바이트코드는 이식성이 뛰어나 가상 머신이 설치되어 있으면 빠르게 실행할 수 있다. 플랫폼 별로 가상 머신을 개발하는 과정은 컴파일러를 만드는 간단한데, 그 이유는
 
# 복잡한 최적화 과정은 바이트코드 인터프러터가 대신 해준다.