实时编译是否在活动期间进行



我混淆了常规编译和JIT。我想举个例子问一下。

假设我们有一个WinForms或WPF GUI应用程序正在运行。当我点击按钮时会发生JIT吗?换句话说,当一个事件发生在正在运行的.Net应用程序中时,编译是在那个时刻发生的(当我们单击按钮时(,还是所有JIT都已经在执行过程中发生了(当我们点击exe文件启动程序时(?

默认情况下,JIT发生"及时";,即第一次访问方法时,因此:它可能发生在您单击按钮的第一次时,但不会发生在下一次(除非您最终走上不同的代码路径,并且其他方法需要JIT(。事件处理程序是方法,JIT对它们的工作方式没有区别。在最近的.NET版本中,还有分层JIT,这意味着第一个JIT速度很快,但没有经过严格优化,但如果运行时检测到它被大量使用,它可能会花费一些额外的时间来提高性能。

根据构建机制,也可以在提前构建时执行JIT("AOT"(;如果您已经捕获了可能有助于它生成最佳代码的使用数据。

最新更新