답변:
JIT (Just-In-Time) 컴파일러는 런타임에, 즉 프로그램이 실행되는 동안 코드를 컴파일합니다. 따라서 컴파일 비용은 프로그램 실행 시간의 일부이므로 최소화해야합니다.
이것의 반대는 기본적으로 "일괄 처리 컴파일러"와 동의어 인 AOT 컴파일러입니다. 소스 코드를 머신 코드로 변환 한 다음 머신 코드 만 배포합니다. 따라서 컴파일러는 결과 프로그램의 실행 시간에 영향을 미치지 않으므로 매우 느릴 수 있습니다.
요즘 사람들이 "컴파일러"라고 말하면 일반적으로 AOT 컴파일러를 의미합니다. 실제로, "AOT 컴파일러"라는 용어는 사람들이 JIT 컴파일 언어, 특히 JavaScript를 위해 AOT 컴파일러를 만들기 시작할 때 비교적 최근에 인기를 얻기 시작했습니다. C #과 같은 많은 언어는 VM의 중간 언어로 컴파일 된 다음 런타임에 기계 코드로 JIT 컴파일됩니다. "AOT 컴파일러"라는 용어는 소스 코드가 기계 코드로 직접 컴파일 될 것이라는 의미를 가지므로 런타임에 JIT 컴파일 형식이 필요하지 않습니다.
"배치 컴파일러"는이 시점에서 약간의 구식 용어입니다. 이 용어가 널리 사용되는 배치 컴파일러와의 실제 대조는 증분 컴파일러 였습니다. 증분 컴파일은 종종 REPL이있는 Lisp와 같은 언어와 관련이 있으며 특정 함수를 컴파일하기 위해 언어 구현을 대화식으로 요청할 수 있습니다. 컴파일이 요청되지 않은 함수가 실행 된 경우 일반적으로 해석됩니다. 대조적으로 배치 컴파일러는 모든 기능을 한 번에, 즉 배치로 컴파일했습니다.
의미는 당신이 제공 한 견적에 내포되어 있습니다! 작업이 실시간으로 수행되지 않을 때 사용되는 컴퓨팅 용어 배치 처리 에서 비롯 되지만로드 (종종 실시간 활동의 경우)가 적을 때 운영 체제에서 나중에 실행되도록 예약되었습니다.
배치 컴파일러는 사용자가 컴파일 결과를 기다리지 않을 때 컴파일하는 컴파일러입니다. 그것은 더 현대적인 용어를 사용하여 백그라운드에서 수행되는 것입니다.
이것은 JIT (Just-In-Time)와는 반대로 처리를보다 철저하게 수행하기 위해 여분의 시간을 소비 할 필요없이 정확한 시간에 "실시간"수행됩니다.
배치 컴파일의 느린 속도는 다음과 같이 설명 할 수 있습니다.
또는 이것조차도 :