c# – 什么时候提前编译(AOT)?

c# – 什么时候提前编译(AOT)?,第1张

概述我正在使用C#.NET作为Web应用程序.我已经读过JIT编译发生在运行时,这意味着(纠正我,如果我错了)编译将在请求到达IIS时发生. 在使用MSBuild将高级代码转换为CIL的解决方案的构建阶段使用csc.exe进行另一次编译. 如果没有JIT并且我们想要使用AOT,AOT在哪里适合所有这些? 我的问题是在从构建代码到第一个请求的整个阶段中,AOT编译发生了什么? (平台/框架无所谓) 经过 我正在使用C#.NET作为Web应用程序.我已经读过JIT编译发生在运行时,这意味着(纠正我,如果我错了)编译将在请求到达IIS时发生.

在使用MSBuild将高级代码转换为CIL的解决方案的构建阶段使用csc.exe进行另一次编译.

如果没有JIT并且我们想要使用AOT,AOT在哪里适合所有这些?

我的问题是在从构建代码到第一个请求的整个阶段中,AOT编译发生了什么? (平台/框架无所谓)

解决方法 经过大量的谷歌搜索和研究,我发现我对编译器的基本理解是错误的.

编译器是将语言X中的程序转换为语言Y的程序的程序.语言Y可以是任何东西(本机机器代码,中间代码/字节代码,某些其他语言Z或相同语言本身).

编译器不一定是将语言X中的程序转换为m代码的程序.

例如,使用编译器csc.exe从高级C#代码到CIL进行编译. (我怎么能错过?呃!)

此外,Ahead-Of-Time和Just-In-Time编译器中的时间指的是运行时.因此,在Ahead-Of-Time编译器中,编译在程序运行之前发生,通常作为构建步骤添加.在Just-In-Time编译器中,编译在程序运行时不断发生.

为了将它放在C#.NET透视图中并回答我的问题,CIL由MSBuild使用csc.exe生成,而不考虑CLR是否使用JIT或AOT编译器.在运行程序时,JIT或AOT编译器开始运行.在程序运行之前,AOT编译器将整个程序集(在CIL或语言X中)编译为本机机器代码(语言Y).当调用方法时,JIT编译器将各个方法和类(在CIL或语言X中)编译为本机机器代码(语言Y).

CLR默认提供JIT编译器,但它也支持使用Native Image Generator(Ngen.exe)进行AOT编译.

总结

以上是内存溢出为你收集整理的c# – 什么时候提前编译(AOT)?全部内容,希望文章能够帮你解决c# – 什么时候提前编译(AOT)?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1239028.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存