ios – Xamarin Ahead-of-Time(AOT)编译器与普通编译器

ios – Xamarin Ahead-of-Time(AOT)编译器与普通编译器,第1张

概述我的理解是Xamarin的Ahead-of-Time(AOT)编译器直接将Xamarin.iOS应用程序编译为本机ARM汇编代码 (How Xamarin works). 然而,我没有得到的是为什么它需要被称为“Ahead-of-Time”而不仅仅是一个普通的编译器. Xamarin的AOT编译器和传统编译器之间有什么区别,还是仅仅是一个营销术语? AOT如何与传统的JIT编译器进行比较 Ahea 我的理解是Xamarin的Ahead-of-Time(AOT)编译器直接将Xamarin.iOS应用程序编译为本机ARM汇编代码 (How Xamarin works).

然而,我没有得到的是为什么它需要被称为“Ahead-of-Time”而不仅仅是一个普通的编译器. Xamarin的AOT编译器和传统编译器之间有什么区别,还是仅仅是一个营销术语?

解决方法 AOT如何与传统的JIT编译器进行比较

Ahead-of-Time(AOT)编译与Just-in-Time compilation(JIT)形成对比.

简而言之,.NET编译器不生成特定于平台的汇编代码,它们生成.NET字节码,这些指令由.NET虚拟机解释.这个字节码是可移植的,任何.NET VM都可以运行它,无论是windows Phone,linux上的Mono还是JavaScript-based implementation.不幸的是,因为代码必须由VM解释它比本机代码慢,可以由处理器本身.这就是JIT和AOT的用武之地.

当.NET应用程序启动时,JIT编译器会分析字节码,通过转换为本机代码来识别可以加速的区域,并编译它们.在执行期间,编译器还可以识别用于编译的热路径.

不幸的是,对于.NET,Java以及任何可以从JIT中受益的平台,App Store服务条款都不允许动态代码生成.由于Xamarin无法在设备上执行JIT,并且他们知道它们正在运送到ARM设备,因此它们可以提前运行JIT类型的编译器(AOT)并将其捆绑到二进制文件中.

AOT如何与机器代码编译器进行比较

如上所述,AOT将解释的字节码的一部分转换为机器代码.它不会消除对虚拟机字节码解释器的需求. VM将按原样运行,但偶尔会看到一条说明“执行此机器代码块”的指令.

这只是一个营销术语吗?

没有.Xamarin在该段中传达的信息是,他们的代码比简单的基于字节码的语言执行得更快.对于iOS和AndroID,他们都能够在热代码路径上执行本机代码以提高性能. AOT和JIT这两个术语是关于他们如何做到这一点的技术细节.

总结

以上是内存溢出为你收集整理的ios – Xamarin Ahead-of-Time(AOT)编译器与普通编译器全部内容,希望文章能够帮你解决ios – Xamarin Ahead-of-Time(AOT)编译器与普通编译器所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/web/1098206.html

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

发表评论

登录后才能评论

评论列表(0条)

保存