On his blog, Scott Guthrie announced that an update for the .NET CLR will be released this summer:
This summer we are going to ship a servicing update to the CLR that makes some significant internal optimizations in how we optimize our data structures to cut down on disk IO and improve memory layout when loading and running applications. Among many other benefits, this work will significantly improve the working set and cold startup performance of .NET 2.0, 3.0 and 3.5 applications and will dramatically improve end-user experiences with .NET-based client applications.
Depending on the size of the application, we expect .NET applications to realize a cold startup performance improvement of between 25-40%. Applications do not need to change any code, nor be recompiled, in order to take advantage of these improvements so the benefits are automatic.
Free improvements are always good improvements. I do hope this update will include the optimizations on value types the JIT team has been blogging about:
Code generation for value types in .NET 2.0 has several inefficiencies.
1) All value type local variables live entirely on the stack.
2) No assertion propagation optimization is ever performed on value type local variables.
3) Methods with value type arguments, local variables, or return values are never inlined.
[...]
Over the past year or so, the JIT team has been working on significant improvements to value type code generation, as well as the inlining algorithm. In summary, all of the above limitations are being eliminated.