На самом деле JIT дает преимущество в производительности для некоторых долго работающих приложений, интенсивно использующих процессор *.
1) Методы класса JIT'ы в том порядке, в котором они были впервые использованы
2) Для многих приложений улучшится локальность кода (устранение промахов кэша ЦП)
* - приложения с этими качествами имеют тенденцию быть серверными
Но если время запуска вас беспокоит, тогда NGen по крайней мере для сборок, которые содержат код запуска (если он может быть изолирован), поскольку код запуска часто загружается только один раз и не будет извлекать выгоду из локальности JIT по требованию .
Приятной особенностью улучшений CLR за последние пару лет стало облегчение некоторых серьезных проблем с производительностью при запуске, таких как коллизии базовых адресов (см. http://msdn.microsoft.com/en-us/magazine/dd569747.aspx), и улучшения в таких инструментах, как NGen, для сокращения накладных расходов (время NGen) после того, как установка приложения была сокращена.) Если вы используете .NET 3.5 и беспокоитесь о времени запуска, вы можете измерить при запуске 32-разрядную и 64-разрядную версию, поскольку JIT имел очень разные бэкэнды для x86 / x64 до .NET 4.