BUIDING [1] MonoAOT&Unity IL2CPP 的区别

Mono的AOT编译

        Mono的AOT(Ahead of Time)编译是一种在程序运行之前就已经编译成了机器码可以直接运行的方式。这种方式的优点包括可以避免在运行时的编译性能消耗和内存消耗,可以在程序运行初期就达到最高性能,可以显著加快程序的启动速度。然而,AOT编译也有缺点,例如在程序运行前编译会使程序安装的时间增加,牺牲了Java的一致性,并且将提前编译的内容保存会占用更多的外部存储空间。

IL2CPP

        IL2CPP(Intermediate Language to C++)是Unity开发的脚本后端,它将C#脚本代码转换为C++代码,然后由C++编译器编译生成本机可执行的汇编代码。IL2CPP的优点包括运行效率快,可以调试生成的C++代码,可以启用引擎代码剥离来减少代码的大小,程序的运行效率比Mono高,运行速度快,多平台移植非常方便。不过,IL2CPP的缺点包括构建时间比Mono长,只支持AOT(Ahead Of Time)编译,而且在代码剪裁带来的某些泛型类型无法使用的问题上,需要引入了Generic Sharing(泛型代码共享)的概念。 对比表格


对比维度MONO AOTIL2PP
编译方式运行前编译运行前编译
运行效率较高更高
启动速度较快更快
内存占用较大较小
跨平台移植支持支持
构建时间较快较慢
支持的编译方式AOTAOT
代码优化有限更全面
调试能力支持支持
内存管理依赖GC依赖GC
安全性一般更高
兼容性较好更好
支持的平台广泛广泛
代码体积较大较小
性能调优有限更灵活
内存分配依赖GC依赖GC
垃圾收集GC管理GC管理
运行时支持支持支持
动态编译支持不支持
代码共享有限支持
性能提升1.5-2.0倍1.5-2.0倍
代码剪裁支持支持
编译后的代码类型托管程序集C++代码
编译后的代码执行依赖Mono VM依赖IL2CPP VM
编译后的代码优化有限更全面
编译后的代码调试支持支持
编译后的代码大小较大较小
编译后的代码性能较高更高
编译后的代码兼容性较好更好
编译后的代码安全性一般更高
编译后的代码内存管理依赖GC依赖GC
编译后的代码垃圾收集GC管理GC管理
编译后的代码运行时支持支持支持
编译后的代码动态编译支持不支持
编译后的代码代码共享有限支持
编译后的代码性能提升1.5-2.0倍1.5-2.0倍
编译后的代码代码剪裁支持支持

 

 

 

  • 21
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值