设计海报网站,搜索网站制作教程,wordpress app端,百度网站建设的一般要素楔子来下这些概念R22,Crossgen2这两个东西#xff0c;跟前面讲的AOT和CLR有异曲同工之妙#xff0c;到底什么呢#xff1f;本篇来看下。R2RR2R(ReadyToRun),是一种结合了AOT和CLR编译模式#xff0c;取其优点#xff0c;抛其缺点的一种编译方式。具体的呢#xff0c;R2R包…楔子来下这些概念R22,Crossgen2这两个东西跟前面讲的AOT和CLR有异曲同工之妙到底什么呢本篇来看下。R2RR2R(ReadyToRun),是一种结合了AOT和CLR编译模式取其优点抛其缺点的一种编译方式。具体的呢R2R包含了本地机器码编译AOT)和即时编译(JIT),R2R把一些函数编译的最佳结果存储在DLL或者Exe里面下次直接进行调用。而没有被编译的函数则调用RyuJit进行编译视乎情况而定是否保存结果。这样就导致了R2R的特殊编译模式。而AOT的缺点比如需要完全匹配的编译设置放弃许多优化并且在跨模块通用虚拟方法实现存在麻烦的情况下得以通过JIT即时来解决。而JIT的缺点比如第一次启动较慢无论什么函数都要来一遍即时编译等等都得以通过AOT解决。两相互补完美配合应该是微软的初衷。Crossgen2Crossgen2 生成包含 CoreCLR 运行时的代码和数据结构的 ReadyToRun 模块.简单点这个工具就是生成R2R格式的文件以供CLR按照既定的格式进行运行和编译。而AOT的编译器ILC,则是与crossgen2共享代码库的终章ILC和Crossgen2是两个工具分别生成AOT目标文件和R2R格式文件。