2011-12-22 53 views
-2

我注意到了以下内容,但无法理解为什么。如何在vb.net中运行存储过程

每当在.net中调用一个过程时,它比随后调用它需要更多的时间。

即使某个过程在某个时间间隔后被调用,如果它被频繁调用,它所花费的时间也会更多。我不问有关sql查询或sql命令。任何用户定义的函数或用户定义的方法需要更多的时间来完成时,它被偶尔调用。但是当经常调用相同的过程时,它会更快地完成。为什么?

是什么原因,可以任何身体帮助。

回答

2

在.NET语言中,您编写的代码被编译为通用中间语言(CIL,或简称为IL)字节码。机器上的JIT编译器然后在运行时将该CIL转换为本机指令。因此,如果您在x86机器上,JIT编译器会将CIL字节码转换为x86汇编指令并执行它们。

为了加快执行速度,JIT编译器暂时缓存编译好的本机代码。当您的代码离开某些代码的作用域并且一段时间不返回时,缓存条目将被删除。

当您在每次调用之间只需少量时间重复运行一个方法时,本机代码仍保持缓存状态,无需重新编译。如果您不经常调用它,则高速缓存条目到期并且代码需要重新编译。

所有这些都高度依赖于您正在使用的.NET运行时,因为它背后没有标准化的行为。