In .NET bytecodes are always compiled to native code before execution, there aren't any interpretation steps like in other management environments.
By default, MSIL gets compiled to native code on load via a JIT compiler. The developers that care about performance on startup, can choose to use ngen at installion time, thus taking the JIT out of the equation.
The only issue with ngen is that it isn't able to perform all optimizations that the JIT is capable of.
So this new JIT improves the current JIT and most likely, the optimizer will also be used by ngen.
By default, MSIL gets compiled to native code on load via a JIT compiler. The developers that care about performance on startup, can choose to use ngen at installion time, thus taking the JIT out of the equation.
The only issue with ngen is that it isn't able to perform all optimizations that the JIT is capable of.
So this new JIT improves the current JIT and most likely, the optimizer will also be used by ngen.