The key points about Native Image Generator are:
- Native images load faster than MSIL because JIT compilation and type-safety verification is eliminated.
- If you are sharing code between process Ngen.exe improves the performance significantly. As Native image generated Windows PE file so a single DLL file can be shared across applications. By contrast JIT produced code are private to an assembly and can not be shared.
- Native images enable code sharing between processes.
- Native images require more storage space and more time to generate.
- Startup time performance improves lot. We can get considerable gains when applications share component assemblies because after the first application has been started the shared components are already loaded for subsequent applications. If assemblies in an application must be loaded from the hard disk, does not benefit as much from native images because the hard disk access time shadows everything.
- Assemblies in GAC do not benefit from Native image generator as the loader performs extra validation on the strong named assemblies thus shadowing the benefits of Native Image Generator.
- If any of the assemblies change then Native image should also be updated.
- You should have administrative privilege for running Ngen.exe.
- While this can fasten your application startup times as the code is statically compiled but it can be somewhat slower than the code generated dynamically by the JIT compiler. So you need to compare how the whole application performance with Ngen.exe and with out it.
0 comments:
Post a Comment