There are 3 types of JIT compiler in .NET:
- Normal JIT: It’s the Default or Standard JIT compiler which compiles only those methods that are called at runtime. These methods are compiled the first time they are called, and are stored thereafter in cache. This compiled code is served from cache on all further calls to these methods. It produces optimized code.
- Econo JIT: It also compiles only those methods that are called at runtime. It has a has a faster compilation speed and a lesser compiler overhead than Standard-JIT and requires less memory. These compiled methods are not stored in cache so that RAM memory remains available in optimal manner. Econo-JIT just produce the native counterpart of MSIL instructions However, the Standard-JIT generates more optimized code than the Econo-JIT and includes the verification of MSIL code.
- Pre-JIT: It compiles the complete source code into native code in a single compilation cycle. This is done at the time of deployment of application. We can implement Pre-JIT by using ngen.exe.
Basically Econo-JIT is chosen when devices have limited memory and CPU capacity like windows CE powered device. If the machine has no memory limitation with better CPU power, Normal-JIT is used.