Search code examples
.netjit

Can I avoid JIT in .NET?


Say if my code is always going to be run on a particular processor and if I have this information during installation - is there a chance I can avoid JIT?


Solution

  • You don't have to avoid JIT if you have CPU information at installation.

    If you compile your modules using the /platform:[x86/x64/IA64] switch, the compiler will include this information in the resulting PE file so that the CLR will JIT the code into the appropriate CPU native code and optimize the code for that CPU architecture.

    You can use NGEN, yes but only if you want to improve the application's startup as a result of the reduced working set in the processes running not becuase you would have avoided JITting. And you need to actually compare the NGEN'd files' performance against that of the non-NGEN'd files' to make sure that the NGEN'd one is faster.

    NGEN can't make as many assumptions about the execution environment as the JIT compiler can and therefore will produce unoptimized code.

    For example: it adds indirections for static field access because the actual address of the static fields is known only at run time.