1.原理篇

     ILRuntime借助Mono.Cecil库来读取DLL的PE信息,以及当中类型的所有信息,最终得到方法的IL汇编码,然后通过内置的IL解译执行虚拟机来执行DLL中的代码。

2.常见问题

1) 跨域继承问题:可用跨越继承来热更主域代码 跨域继承时需生产对应的adapter,且adapter代码可能会有问题,需手动修复。 跨越只可继承一个主域中的类或者接口,但可继承多个热更域的接口
2) 委托调用 : 热更代码调用主域的委托需现在主域注册
常用的system.action一定要注册,ui的默认调用会用到
可自己多注册一些委托供后续使用
3) 泛型: 主域需在热更域调用的代码不推荐使用泛型
需在热更域调用的主域泛型方法代码需把每一种类型都在主域调用一次,否则会被裁剪
泛型实例可使用热更域内的类型作为泛型,因为泛型内部的类型都是 ILTypeInstance
4) 裁剪: 因为对后续热更内容所引用模块的不确定性,选择了低等级裁剪,目前相对高等级裁剪相差1m。(但仍然有后续类被裁掉的风险?)
5)寄存器模式:即ilruntime自己的jit编译器,用处是提升大规模数学计算的性能
通过ILRuntime自己的JIT Compiler将原始DLL的MSIL指令集转换成一个自定义的基于寄存器的指令集,再进行解译执行
6)第三方库的支持性不够,使用泛型的第三方库需要自己处理(如protobuf, Imessage会无法生成对应的泛型)
7)数学计算仍慢于lua,基础计算慢一倍作用(加减乘除等),for循环慢六倍左右。复杂数学计算略快于lua,调用unity组件速度最快可达到lua的十倍。
8) 不支持IntPtr等与硬件打交道的类型
9) 不支持可空类型(仅支持基础类型的可空类型)

3.mono和il2cpp编译过程


4.性能相关

ilruntime介绍相关推荐

  1. ILRuntime学习

    ILRuntime介绍 ILRuntime项目为基于C#的平台(例如Unity)提供了一个纯C#实现,快速.方便且可靠的IL运行时,使得能够在不支持JIT的硬件环境(如iOS)能够实现代码的热更新 I ...

  2. Unity热更新之ILRuntime

    ILRuntime介绍 ILRuntime项目为基于C#的平台(例如Unity)提供了一个纯C#实现,快速.方便且可靠的IL运行时,使得能够在不支持JIT的硬件环境(如iOS)能够实现代码的热更新. ...

  3. ILRuntime篇:介绍并下载运行官方案例

    学习环境 Rider 2018.4 .Net Framework 4.7.2 Unity 2018.3 ILRuntime地址:https://github.com/Ourpalm/ILRuntime ...

  4. Java和U3D比较,Unity热更方案 ILRuntime 和 toLua的比较

    前言 目前市面上流行的热更方案就是lua系列和ILRuntime,选取哪一种需要根据自己的项目进行比对. 无论是ILRuntime还是toLua都是市面上有在用到的热更方案.直观上来讲,都可以通过把代 ...

  5. ILRuntime来实现热更新的优与劣!

    热更新 Q1:使用ILRuntime来实现热更新的可行度有多高,大家有没有使用经验分享? 一般热更新分两块,代码+资源,资源热更几乎都是通过AssetBundle来搞,代码热更可以用某种解释器+解释执 ...

  6. 必读!ILRuntime来实现热更新的优与劣!

    原文链接:https://blog.uwa4d.com/archives/2308.html 这是第103篇UWA技术知识分享的推送.今天我们继续为大家精选了若干和开发.优化相关的问题,建议阅读时间1 ...

  7. [转载]必读!ILRuntime来实现热更新的优与劣!

    原文链接:https://blog.uwa4d.com/archives/2308.html 这是第103篇UWA技术知识分享的推送.今天我们继续为大家精选了若干和开发.优化相关的问题,建议阅读时间1 ...

  8. ILRuntime Unity热更新

    在新的项目中,使用到了ILRuntime的热更新方式,不同于XLua等,这种方式的热更新是由纯C#实现的,所以就不需要客户端懂Lua的代码.更详细的介绍可以看官方的文档. 官方的介绍及文档为:http ...

  9. 跑通、ILRuntime,全程傻瓜式指导。

    官方文档这里面有介绍流程. http://ourpalm.github.io/ILRuntime/public/v1/guide/tutorial.html 以下步骤,可以按照我的来,也可以按照官方文 ...

最新文章

  1. GPB:菊粉改善糖脂代谢紊乱作用的机制(作者解读)
  2. 自定义一个安全的rm指令
  3. 高考 | 满分作文:《我们都是读“书”人》
  4. pandas的dataframe节省内存
  5. 字符流的抽象类 reader writter java
  6. 面试官:Spring该选择哪个构造方法来进行实例化?画重点要考的
  7. pytest测试框架(六)---使用skip和skipif跳过测试用例
  8. 客户端navicat安装教程
  9. OpManager网络性能监控
  10. 3.12_ValueError: x and y must have same first dimension, but have shapes (100,) and (1,)
  11. SDHC和SDXC的区别总结
  12. PS去掉图片上的文字的6种基本方法
  13. oracle建表复制表结构,ORACLE复制表结构
  14. IExplore.exe应用程序错误解决方法
  15. 华为云内网DNS地址大全(不同区域DNS地址)
  16. python3.8.2 安装 win7下安装
  17. html阅读是什意思,HTML是什么意思?什么是HTML5?什么是H5? | 前端面试题
  18. 对于大学工作规划和面试前准备
  19. nagios分布式监控中心服务器迁移(使用nsca)
  20. linux搭建ftps(vsftpd),java代码测试上传下载

热门文章

  1. 由百度关键词联想联想到的
  2. mips中关于j跳转和b跳转
  3. win10 JDK安装图解
  4. 安卓android模拟器上网设置
  5. 计算机的显卡哪个,用电脑玩游戏显卡和CPU哪个更重要呢?
  6. 补丁冷启动模式_只要5步,实现从0到1冷启动
  7. java调用企业微信接口发送文件功能
  8. 程序员,春天来了,你定了计划清单没
  9. 记录微博爬虫遇到问题
  10. Java系列-JavaWeb