首页 > 其他分享 >ilruntime原理浅究(一)

ilruntime原理浅究(一)

时间:2024-07-09 17:30:35浏览次数:14  
标签:ilruntime 执行 代码 机器码 编译 JIT 原理 浅究 运行

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代码,这使得热更新成为可能。

标签:ilruntime,执行,代码,机器码,编译,JIT,原理,浅究,运行
From: https://www.cnblogs.com/chenxiayun/p/18292232

相关文章

  • 跨站请求伪造(CSRF)攻击原理及预防手段
    1、什么是跨站请求伪造?CSRF(Cross-siteRequestForgery,跨站请求伪造)攻击是一种常见的Web攻击,它利用用户在登录某个网站后的有效session来发送恶意请求。攻击者通过引导用户访问恶意网站,将用户的数据提交到目标网站,欺骗目标网站相信该请求是用户发送的。CSRF攻击的关键是攻击者可......
  • Vue源码学习(二十):$emit、$on实现原理
    好家伙, 0、一个例子<!DOCTYPEhtml><htmllang="zh-CN"><head><metacharset="UTF-8"><title>Vue父子组件通信示例</title><scriptsrc="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"......
  • GPU加速视频编解码技术:原理、优势与应用
       NVIDIA是一家全球知名的图形处理芯片(GPU)制造商,致力于为个人电脑、游戏机、移动设备等平台提供高性能的GPU解决方案。其产品和技术在视频加速领域具有广泛的应用,本文将详细介绍NVIDIA的视频加速技术及其相关解决方案。一、NVIDIA的视频加速技术概述NVIDIA的视频加速......
  • PostgreSQL的AutoVacuum原理及autovacuum不工作问题解析
    1、AutoVacuum概述PostgreSQL数据库是有数据清理的,有人工执行清理,也有自动清理,但是这2种的清理方式对性能是有不同的影响,特别是OLTP环境中,每次不管是人工清理还是自动清理deadtuple,都会对数据库的IO有明显的影响,基于PostgreSQL的原理每个表中的行会存在多个版本的数据,为了完成......
  • 磁致伸缩液位计原理和特点
    工作原理磁致伸缩液位计的工作原理基于磁性材料在外部磁场作用下的尺寸变化来进行液位测量。该液位计主要由电子变送器、浮球(浮子)、探测杆(测杆)三部分组成。在磁致伸缩液位计的传感器测杆外配有一浮子,此浮子可以沿测杆随液位的变化而上下移动。浮子内部有一组永久磁环。当电子......
  • 嵌入式学习——C语言概述(编译原理)
    一、计算机的组成部分输入设备、内存、cpu(运算器、控制器)、外存储器、输出设备二、C语言编译的步骤(面试重点)1、预处理:宏指令的替换(#include<stdio.h>等等)、删除注释、添加行号等。      例如:gcc-Ehello.c-ohello.ihello.i文件内容:    这段代码就......
  • MySQL MVCC实现原理
    MySQL的InnoDB存储引擎使用多版本并发控制(MVCC,Multi-VersionConcurrencyControl)机制来支持高并发的读写操作,同时保证事务的隔离性和一致性。MVCC允许不同的事务看到不同的数据版本,从而减少了锁的竞争,提高了数据库的并发性能。隐式字段InnoDB在每行记录中添加了几个隐藏的......
  • spring三级缓存解决循环依赖原理
    在Spring框架中,Bean的实例化和管理是通过其核心的IoC容器完成的。在处理Bean的依赖注入时,可能会遇到循环依赖的问题,即两个或多个Bean相互引用对方。为了解决这一问题,Spring采用了三级缓存机制。一级缓存:singletonObjects这是SpringIoC容器中的主要缓存,用于存放已经创建并完全初......
  • 【0295】Posgres内核 dynahash table 之 hash_search 实现原理(2)
    相关文章:【0294】Postgres内核dynahash之hash_search实现原理(1)0.前言在【0294】Postgres内核dynahash之hash_search实现原理(1)一文中,从Postgres内核源码角度详细讲解了dynamichashtable中hashsearch的实现原理。具体内容:如何确定segment位置如何确定bu......
  • 08.以太网交换基础+VLAN原理
    一、以太网协议介绍冲突域在共享网络(集线器hub)中,整个集线器就是一个冲突域,如果你用我也用那就信号冲突,结果全军覆没,什么数据都无法传输。为此引入了CSMA/CD机制,这样就能有效避免冲突。终端设备不停地检测共享线路的状态-->如果线路空闲,会有一个随机延迟,然后开始发送......