【问题标题】:Why is the first time the .net code run => it will slower then the second?为什么 .net 代码第一次运行 => 它会比第二次慢?
【发布时间】:2012-02-25 21:16:28
【问题描述】:

当我使用一些 .net 程序集并在机器上运行它时 => JIT 将代码转换为本机并运行它。 如果我将停止应用程序并再次运行它,它将(再次)加载到 JIT 中,JIT 将再次转换它并再次运行它。

那么为什么应用的第二次运行会更加优化和溃烂呢? JIT 是否以某种方式保存了第一个本机代码,然后无需将代码再次从 IL 转换为 native ?如果是“是”,那么转换后的代码(本机)保存在哪里?

【问题讨论】:

  • 您必须考虑 .net 需要加载的所有库才能运行您的应用程序,而不仅仅是您编写的代码。因此,一旦将它们加载到内存中,速度就会快得多。
  • 简单的磁盘缓存可能会解释很多......
  • 你如何衡量它实际上更快?

标签: .net clr


【解决方案1】:

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

当我说“它”时,我指的是使 .NET 应用程序运行所需的完整文件链和库。

【讨论】:

  • 如果我清理缓存(假设缓存是内存)?本机的代码被清理了..它仍然假设第二次运行恶化
  • 当我说缓存时,我的意思是广义上的。您的磁盘控制器将缓存文件,使其不会从盘片加载,操作系统将缓存文件,因此无需转到磁盘等。您无法有效地清理所有将启动的缓存。
  • 在计算机上几乎没有什么可以没有第二次更快。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-19
  • 2018-11-03
  • 1970-01-01
  • 2015-12-01
  • 2021-10-18
  • 2018-11-25
相关资源
最近更新 更多