当我们知道它不会改变太多时,使用NGEN和ASP.NET应用程序是否更好?或者JIT足够好吗?
我问的唯一原因是因为Jeffrey Richter在2002年的这篇文章说:
当然,Microsoft正在努力改进CLR及其JIT编译器,以便它运行得更快,生成更优化的代码,并更有效地使用内存.这些改进需要时间.对于不能等待的开发人员,.NET Framework可再发行组件包含一个名为NGen.exe的实用程序.
Jon Skeet.. 22
NGen只会帮助启动时间 - 它不会使代码执行得比JITting之后更快.实际上,我相信有一些优化,NGen 不会做,但JIT会做.
所以,主要的问题是:你有启动时间的问题吗?我不知道ASP.NET应用程序的启动时间有多少是JITting与其他成本,顺便说一句......你应该看看JIT的Performance Manager图表,告诉你它花了多少时间才真正耗费你.
(在可用性方面,拥有多个服务器以便您可以进行滚动重启,这将比使用NGENed Web应用程序的单个服务器带来更多好处.)
NGen只会帮助启动时间 - 它不会使代码执行得比JITting之后更快.实际上,我相信有一些优化,NGen 不会做,但JIT会做.
所以,主要的问题是:你有启动时间的问题吗?我不知道ASP.NET应用程序的启动时间有多少是JITting与其他成本,顺便说一句......你应该看看JIT的Performance Manager图表,告诉你它花了多少时间才真正耗费你.
(在可用性方面,拥有多个服务器以便您可以进行滚动重启,这将比使用NGENed Web应用程序的单个服务器带来更多好处.)
NGen不适合使用ASP.NET - 在bin文件夹中创建.dll不是最后一步 - 它们会在应用于您C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files
文件夹的web/maching.config设置中再次编译.而不是NGen,以减少初始加载时间,使用发布网站工具或aspnet_compiler.exe