2012-02-25 115 views
0

当我拿一些.net程序集并在机器上运行=> JIT将代码转换为本机并运行它。 如果我将停止应用程序并再次运行,它将(再次)加载到JIT中,JIT将再次将其转换并再次运行。为什么第一次运行.net代码=>它会比第二次慢呢?

那么为什么第二次运行的应用程序会更优化和更好? JIT是否保存了第一个本地代码,然后不需要再次将代码从IL转换为本地代码?如果它的'是',那么转换的代码(本机)保存在哪里?

+1

您必须考虑.net需要加载的所有库,以运行您的应用程序,而不仅仅是您编写的代码。所以,一旦它们被加载到内存中,速度会更快。 – ChandlerPelhams 2012-02-25 13:11:36

+0

可能的重复:http://stackoverflow.com/questions/3295622/is-the-net-jit-compiled-code-cached-where – Andreas 2012-02-25 13:19:43

+0

简单的磁盘缓存可能会解释很多... – 2012-02-25 13:20:01

回答

2

它可能在内存中。第二次你做任何事情都会更快,因为你所做的任何事情都会通过系统缓存在不同的地方(通过你的光盘,操作系统......)。

当我说“它”时,我的意思是使您的.NET应用程序运行所需的全部文件和库链。

+0

,如果我清理缓存(假设缓存是RAM)?本机的代码被清理了......并且它仍然假设第二次运行fester – Yanshof 2012-02-25 13:12:58

+1

当我说缓存时,我的意思是说这是一个非常广泛的意义。你的磁盘控制器将会缓存这些文件,以便它不会从磁盘载入,操作系统会缓存这些文件,所以它不需要去磁盘等等。你无法有效地清理所有的文件将缓存的缓存。 – 2012-02-25 13:14:14

+1

在计算机上,您可以做的事情非常少,*不会第二次更快。 – 2012-02-25 13:15:19

相关问题