【Unity】Mono相关理论知识学习

一种编译技术。

优点:

  1. 支持JIT编译:在运行时将IL编译成机器码。首次执行稍慢,好处在于运行更快,迭代更高效。
  2. 构建速度快:无需将IL转成C++,构建过程省去了IL2CPP的转换和原生编译步骤,适合开发阶段快速阶段测试和构建。
  3. 调试体验优秀:支持热重载、断点调试、变量查看、Call Stack等功能.
  4. 构建包体小:没有庞大的C++生成代码和原生库,在某些平台(如PC)可以获得更小的包体。
  5. 兼容性好:Mono支持大部分的C#功能和.NET API。
  6. 适用于某些平台:Unity编辑器就是Mono很多开发工作流程都是基于Mono

缺点:

  1. JIT导致的平台限制:iOS平台禁止使用JIT——Mono无法用于iOS发布
  2. 运行性能差于IL2CPP由于MonoJIT形式因此无法提前进行深度优化移动端嵌入式设备场景性能明显弱于IL2CPP特别启动时间内存分配效率
  3. 可逆性高,安全性差Mono使用IL文件运行容易编译
  4. GC垃圾回收效率相对较低MonoMono GC(Boehm GC)在大内存高频率分配场景效率较差IL2CPP提供UnityGC
  5. 对新语言的支持有限Unity旧版Mono运行支持最新C# 8 / 9特性例如异步流模式匹配增强

Mono构建Unity项目流程:C#源码 --> 用C#编译器编译成中间语言IL--> 生成 .NET DLL

Mono打包结果:生成.Net IL,存储.dll文件属于一种字节码格式不是原生机器码

Mono一个虚拟机运行动态读取IL字节码执行执行方式两种

1. (默认)JIT模式

Mono会在程序运行时IL转换为机器码(本地指令)然后执行对应机器当前平台(Windows/Android)CPU架构生成

2. (可选)解释执行模式

Mono可以直接逐条解释执行IL(性能较差,一般用于调试/嵌入设备)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值