.Net 7 的 R2R,Crossgen2是什么?

楔子

来下这些概念

R22,Crossgen2这两个东西,跟前面讲的AOT和CLR有异曲同工之妙,到底什么呢?本篇来看下。

R2R

R2R(ReadyToRun),是一种结合了AOT和CLR编译模式,取其优点,抛其缺点的一种编译方式。

具体的呢,R2R包含了本地机器码编译(AOT)和即时编译(JIT),R2R把一些函数编译的最佳结果存储在DLL或者Exe里面,下次直接进行调用。而没有被编译的函数,则调用RyuJit进行编译,视乎情况而定是否保存结果。这样就导致了,R2R的特殊编译模式。而AOT的缺点比如:需要完全匹配的编译设置,放弃许多优化,并且在跨模块通用虚拟方法实现存在麻烦的情况下得以通过JIT即时来解决。而JIT的缺点,比如第一次启动较慢,无论什么函数都要来一遍即时编译等等都得以通过AOT解决。

两相互补,完美配合,应该是微软的初衷。

Crossgen2

Crossgen2 生成包含 CoreCLR 运行时的代码和数据结构的 ReadyToRun 模块.

简单点,这个工具就是生成R2R格式的文件,以供CLR按照既定的格式进行运行和编译。

而AOT的编译器ILC,则是与crossgen2共享代码库的

终章

ILC和Crossgen2是两个工具,分别生成AOT目标文件和R2R格式文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值