Below is the use of JIT.
1. JIT is a compiler which converts MSIL code to Native
Code (ie.. CPU-specific code that runs on the same computer architecture).
2. Because the common language runtime supplies a JIT
compiler for each supported CPU architecture, developers can write a set of
MSIL that can be JIT-compiled and run on computers with different
architectures.
3. However, your managed code will run only on a specific
operating system if it calls platform-specific native APIs, or a
platform-specific class library.
4. JIT compilation takes into account the fact that some
code might never get called during execution.
5. Rather than using time and memory to convert all the
MSIL in a portable executable (PE) file to native code, it converts the MSIL as
needed during execution and stores the resulting native code so that it is
accessible for subsequent calls.
6. The loader creates and attaches a stub to each of a
type's methods when the type is loaded.
7. On the initial call to the method, the stub passes
control to the JIT compiler, which converts the MSIL for that method into
native code and modifies the stub to direct execution to the location of the
native code.
8. Subsequent calls of the JIT-compiled method proceed
directly to the native code that was previously generated, reducing the time it
takes to JIT-compile and run the code.