但是,我没有得到的是为什么需要被称为“提前”而不是仅仅是普通编译器的原因。 Xamarin的AOT编译器与传统编译器之间有任何区别,还是这只是营销术语?
aot如何与传统的JIT编译器相比时间(AOT)汇编与time-intime nimecompilation
(jit)。 简而言之,.NET编译器不会生成平台特定的装配代码,它们生成.NET字节码,由.NET虚拟机解释的说明。 此字节码是便携式的,任何.NET VM都可以运行它,无论是Windows Phone,Linux上的Mono还是基于当a .NET应用程序启动时,JIT编译器分析了字节码,请标识可以通过转换为本机代码加速的区域,并将其编译。 在执行过程中,编译器还可以识别编译的热路径。 对于.NET,Java和任何将从JIT中受益的平台,App Store服务条款不允许。 由于Xamarin无法在设备上执行JIT,并且他们知道他们会运送到ARM设备上,因此他们可以提前运行JIT型编译器(AOT)并将其捆绑到二进制中。
如何比较机器代码编译器如上所述,AOT将解释字节的一部分转换为机器代码。 它不会消除对虚拟机字节码解释器的需求。 VM将像以前一样运行,但偶尔会看到一条说“执行机器代码的块”的指令。
这只是一个营销术语吗?没有。 Xamarin在该段中传达的信息是,其代码的性能比基于简单的字节代码语言更快。 对于iOS和Android,他们都可以在热代码路径上执行本机代码以提高性能。 术语AOT和JIT是有关他们如何做的技术细节。