开头很简单,最难的是坚持。|

陈侠云

园龄:2年10个月粉丝:1关注:1

ilruntime原理浅究(一)

AOT和JIT:

AOT(Ahead Of Time):指在程序运行前,将源码编译成目标平台的机器码的过程。

特点:

  1. 快速启动:由于没有运行时编译步骤,程序启动速度更快
  2. 运行时性能更好:减少了JIT编译器的运行时开销,提高了整体性能
  3. 代码体积小:可以进行全局优化,能生成更紧凑的代码
JIT(Just In Time):指程序边运行边编译代码的技术

特点:

  1. 及时编译:在程序运行中,将字节码转为机器码,而不是像AOT那样提前生成
  2. 启动时间慢:因为需要在运行时进行编译,启动时间可能比预编译的程序要长
  3. 跨平台支持:同一份字节码能在不同平台上运行,无需修改源码
  4. 运行时优化:能在运行时优化,显著提高程序的执行效率
  5. 内存开销更大:JIT编译器需要额外的内存来存储编译后的机器码和相关数据
解释执行(Interpreter Execution):解释器组条解析和执行源码或中间代码(IL)的技术

特点:

  1. 在解释执行中,程序代码不会被被编译成本地机器码,而是会逐条读取源代码或中间代码的指令
  2. 与JIT相比,解释执行速度较慢,因为每条指令都需要解析和执行,而不是预先编译为高效的本地机器码
  3. 由于动态解析和执行,解释执行器可能需要更多的内存和CPU资源来处理相同的工作量。
  4. 无法进行像JIT编译那样的静态优化,导致一些性能上的限制
.NET的CLR(Common Language Runtime,公共语言运行时):是.NET框架的核心组件之一

特点:

  1. CLR将中间语言(IL代码)编译成机器代码,并在目标平台上执行。这可以通过JIT或者AOT编译实现
  2. GC(Garbage Collection)自动管理内存,减少内存泄漏和无效引用
  3. CLR支持多种编程语言(C#,VB.NET,F#等),这些语言编译后的代码都在CLR中运行
  4. 有公共类型系统(CTS),定义所有CLR支持语言所共有的数据类型和编程结构,确保不同语言间可以互相操作。
  5. 有代码访问安全性(CAS),控制代码能够支持的操作,限制其访问资源的能力。
IOS禁止JIT,游戏需要热更的罪魁祸首
ilruntime热更原理
  1. ilruntime通过解释执行来运行中间语言代码(IL),而不是将其及时编译为机器码,解释执行不涉及生成新的机器码,因此符合IOS的安全和平台限制
  2. 解释执行方式允许ILR在在运行时动态加载和执行新的IL代码,这使得热更新成为可能。

本文作者:陈侠云

本文链接:https://www.cnblogs.com/chenxiayun/p/18292232

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   陈侠云  阅读(118)  评论(0编辑  收藏  举报
//雪花飘落效果
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起