JIT Compile 김진태
JIT Compile 이란 ? Managed Code(C#, java, managed C++ 등 ) 에서의 성능 향상을 목적 으로 둔 컴파일 기법Managed Code 예 ) JVM –JVM 의 일반적인 실행 방식 –JIT Compile 방식 Java 를 예로 들면 byte code 를 실행하는 경우 JVM 은 한번에 하나의 byte code 명 령어를 번역하여 실행한다. JIT 방식을 사용하게 되면 호출한 byte code 를 해당 플랫폼에서의 실 행 가능한 기계 코드로 실행시간에 컴파일한 후, 기계 코드를 사용한다. 이것은 기존의 interpreter 방식의 단 점을 보완한 방법으로 특정 메쏘드를 지속적으로 호출할 때 더 빠른 성능을 보인다.
JIT Compile 이란 ? 실제로 JVM 은 JIT Compiler 를 포함하고 있지만 –JVM 은 interpreter –JIT 는 Compiler 라고 볼 수 있다. interpreter 방식에서는 byte code 명령어 하나씩 그때 그때 변환하여 실 행하지만 JIT 를 사용하면 호출 되는 순간 프로그램의 한 단위를 machine code 로 컴파일 해서 메모리에 올려놓고 지속적으로 그 코드를 사용한다. – 하지만 이로 인해 일부 프로그램의 경우 오히려 성능 저하를 가져 올 수 있다. 반복적인 메소드 호출이 없는 경우에는 지속적인 bytecode->machine code 로의 컴파일이 발생하기 때문에 성능 저하가 발생한다. – 이러한 이유로 JVM 에서 JIT 는 option 으로 사용 여부를 선택 할 수 있다. – 이를 보완하기 위한 compile 방식으로 AOT(ahead-of-time) 방식이 있다. AOT 방식은 실행 전에 미리 컴파일하는 방식으로 성능 향상에 도움이 된다. – 자세한 내용은 위키참조 ( ※.NET Framework 의 CLR 역시 JIT 기능을 가지고 있다.
참조 htmhttp:// htm
첨부 Managed Code – 통상 중간언어라 부르기도 한다. – JVM 과 CLR 에 의해 실행시간에 기계어로 번역되어 실 행되는 코드 실행 환경을 만들어주면 플랫폼 영향을 덜 받는다는 장점이 있지만 인터프리터 머신에 의해 실행시간에 기계어 번역의 오버헤드 가 발생하여 성능이 느리다는 단점이 있다. – 이를 보완하기 위한 기술 -> JIT CompileJIT Compile – 예 ) byte code –java code 를 java compiler 에 의해 컴파일되어 나오는 code IL –C#, basic, managed C++ 을.NET Framework Compiler 에 의해 컴파 일되어 나오는 code