title: How to speedup .NET assembly loading performance
body: <p>We have a product with about 50 assemblies (DLL files) of which most are needed and loaded at startup of the main executable. The result is that even on a moderately fast machine, loading time of the assemblies and JIT'ing them takes between 2-3 seconds, which is in our case an unacceptable overhead.</p>
  
  <p>If we load the program once and run it multiple times from the same, still running executable, the timings start at several ms. But for end-users this is not an option, they will run it from the commandline.</p>
  
  <p>I would like to speed up the loading on first instantiating the executable. There is a small speedup between a cold start (after reboot of Windows) and a warm start, but only marginally so. What techniques or tools are available in .NET that we can use to speedup loading (note: we tried ILMERGE, which helps about 30% only and NGEN is not an option, it needs to be run at a variety of systems and architectures).</p>
  
  <p>I was considering creating a service and/or a specific CLR hosting environment, but hopefully there is a simpler, more trivial solution. I have not tried GAC'ing yet.</p>