JIT编译器会再来这里吗?

时间:2010-04-22 19:34:22

标签: asp.net-mvc .net-3.5 application-pool

我有一个疑问,我有一个asp.net MVC Web应用程序,每天晚上我们都会从IIS中重新启动applciation池。现在,当第二天第一次请求到来时,需要时间来获得响应。

首先请求花费时间,因为未加载应用程序域(应用程序未启动)启动Web应用程序需要一些时间。

现在的问题是,及时编译器会再次来到这里吗? 意味着每天早上需要再次由JIT重新编译?

2 个答案:

答案 0 :(得分:2)

是的,应用程序将在回收后再次从IL编译为可执行代码:丢弃appdomain也将丢失JITed本机映像。

例如,您可以通过在GAC中放置不经常更改的依赖程序集来避免某些编译,并在它们上使用NGEN。这可能会加速一些事情。

答案 1 :(得分:2)

JITting通常不会有巨大的性能损失。 IIS进程的冷启动,启动AppDomain并从磁盘加载程序集可能会产生更大的影响。此外,您的应用程序可能在global.asax文件中有一些自定义启动逻辑(从db读取内容)。不要忘记你的数据库可能也必须醒来。