.NET 8的AOT功能
从.NET 7开始,.NET平台多了AOT的功能。
这个功能从一出来我们差不多就在关注,但目前还没有真正使用到项目中去。
下面是我自己的理解,不一定都对或者准确。
.NET平台的话,按照原来的编译过程,并不会真正编译成真正的机器语言,而是先编译成中间语言,等到真正执行的时候,才会去编译成最终的机器语言。
所以.NET平台的应用运行基本上都是运行时的,这个应该跟Java这些差不多原理。
而现在新的AOT功能,相当于就是从一开始就把应用编译成目标的机器语言。
AOT的优点
1、应用的启动速度更快。因为传统的.NET应用,启动前有一个编译成机器语言的过程,而AOT跳过了这个过程。
2、不依赖于.NET运行时。原来的.NET应用,运行前机器上一定要先安装过对应的运行时,而且对版本还有要求。
3、用AOT编译的DLL文件可以直接给C++语言去调用。
AOT的局限
从.NET 7到.NET 8,AOT功能也做了升级,支持的功能和支持的平台上多了不少,但依赖有不少局限。
1、基本上只支持非图形界面应用,支持最好的应该是控制台应用,.NET 8新增了ASP.NET Core的支持。类似WPF和WinForm这些,目前都不支持AOT。
2、只支持x64和Arm64架构,不支持x86。我们的目标客户的电脑还有很多都是XP系统的,很多应用都需要支持XP系统的。
AOT的缺点
1、一些跟动态编译,反射相关的功能,要么不能用,要么有限制。
2、性能上会差一点。最开始了解AOT的启动速度快一点,想当然以为AOT的性能也会好一点。但据了解的情况,JIT方式的应用性能会更好一点。因为AOT从最开始就已经编译成机器语言了,所以有些东西就没办法做编译优化。而JIT方式的程序,在启动编译时,会根据目标机器的情况做针对性的优化编译处理。
3、类似一些System.Linq.Expressions的功能,AOT的方式会比JIT方式的更慢一点。
参考资料
https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/?tabs=net7%2Cwindows
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧