ILRuntime学习(之四)
第5个例子讲解是重定向,原理按照官网的说法是:当IL解译器发现需要调用某个指定CLR方法时,将实际调用重定向到另外一个方法进行挟持,再在这个方法中对ILRuntime的反射的用法进行处理。例如new方法就是不能直接用的,要进行重定向才可以。例子中举了Debug.Log这个情况,比如我们在DLL里调用Debug.Log,默认情况下是无法显示DLL内堆栈的,但是经过CLR重定向之后可以做到输出DLL内堆栈。实际测试的情况,和这个例子讲解的有出入,可能是例子不完整的缘故。经过我自己测试发现,有两个问题例子没有讲明白,第一个就是,如果在重定向之前和之后调用同样的Debug代码,输出堆栈是一样的,重定向之后的堆栈信息并没有更详细。第二个情况就是,如果我注释重定向之前的输出,则,重定向之后的输出会带有更详细的堆栈信息。
AppDomain.RegisterCLRMethodRedirection(MethodBase mi, CLRRedirectionDelegate func)方法进行重定向的注册,而func方法涉及到了指针,mi参数就是我们需要重定向的方法。
第6个例子讲解的是CLR绑定,使用这种绑定,可以产生更少的GC,按照教程的说法:默认情况下,从热更DLL里调用Unity主工程的方法,是通过反射的方式调用的,这个过程中会产生GC Alloc,并且执行效率会偏低。另外,例子中也指出:CLR绑定会生成较多C#代码,最终会增大包体和Native Code的内存耗用,所以只添加常用类型和频繁调用的接口即可。使用的方法很简单:点击Unity菜单里面的ILRuntime->Generate CLR Binding Code来生成绑定代码。前提是,需要生成绑定代码的类预先写在了ILRuntimeCLRBinding类中,生成的绑定代码在"Assets/ILRuntime/Generated"文件夹中。通过自己的测试发现,感觉是没有啥区别的。。。。下面是没有绑定时的性能测试结果:
下面这张是绑定后的性能测试结果:
可以看出来,基本没有什么区别。不清楚问题在哪儿。
ILRuntime学习(之四)相关推荐
- [转]Docker学习之四:使用docker安装mysql
本文转自:https://blog.csdn.net/qq_19348391/article/details/82998391 Docker学习之一:注册Docker Hub账号 Docker学习之二 ...
- ETL学习之四:SQL Server Integration Services入门
ETL学习之四:SQL Server Integration Services入门 SSIS就是微软在SQL SERVER2005上对DTS的升级,不得不说,微软在BI上是花了很大功夫的,包括提供了S ...
- Kafka学习之四 Kafka常用命令
2019独角兽企业重金招聘Python工程师标准>>> Kafka学习之四 Kafka常用命令 Kafka常用命令 以下是kafka常用命令行总结: 1.查看topic的详细信息 . ...
- 智能会议系统(33)---WebRTC学习之四:最简单的语音聊天
WebRTC学习之四:最简单的语音聊天 VoiceEngine中与最简单语音聊天相关的头文件有五个,如下表所示: 头文件 包含的类 说明 voe_base.h VoiceEngineObserver ...
- nas4free 安装mysql_[转]Docker学习之四:使用docker安装mysql
Docker学习之一:注册Docker Hub账号 Docker学习之二:Docker基本简单操作命令 Docker学习之三:Docker在linux下简单安装使用 Docker学习之四:使用dock ...
- ILRuntime学习(之一)
最近在学习ET框架,然后被群友告知,要先学ILRuntime.行吧,谁让咱是小白呢..... ILRuntime的学习资料我是参考的github上的教程https://ourpalm.github.i ...
- 深度学习之四:常用模型和方法
九.Deep Learning的常用模型或者方法 9.1.AutoEncoder自动编码器 Deep Learning最简单的一种方法是利用人工神经网络的特点,人工神经网络(ANN)本身就是具有 ...
- linux复制文件命令cat ,Linux学习之四(复制移动文件命令cp等及查看文本命令cat等)2017-03-28...
一.复制和移动文件 cp: copy -r:递归复制 -i:交互式命令 -f:强制性复制 -p:保留文件原有文件属性 -L:复制链接文件的指定文件,不保持链接属性 -P:复制链接文件并保持链接属性 - ...
- comparator 多个条件控制_JUnit5学习之四:按条件执行
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类和汇总,及配套源码,涉及Java.Docker.Kubernetes.DevO ...
最新文章
- 如何利用离散Hopfield神经网络进行高校科研能力评价(2)
- 我的第一个用Hibernate框架写的小例子
- i.MX 系列CPU HAB漏洞SecureBoot漏洞
- 压箱底总结:流系统端到端一致性对比
- SpringMVC 实例应用 -- 不同方式控制器实现与参数传递
- C++ limits头文件的用法numeric_limits
- 【转】设计模式学习笔记之命令模式
- sqlserver 分组合并列_哪个“三人组”是历史最强组合?数据显示最均衡组合令人意外...
- excel设置默认值_职场办公必备的7个Excel应用技巧解读,易学易懂,收藏备用!...
- php dlt645,RT-Thread-Mirror
- Win-MASM64汇编语言-JMP指令
- springboot使用Freemarker继承
- 锐捷ac怎么发现局域网ap_锐捷APAC初始化登录管理说明及热点问题
- 【STM32Cube_13】使用硬件I2C读写EEPROM(AT24C02)
- usb计算机连接 不再弹出,电脑usb无法安全弹出问题解决办法
- 计算机领域论文 网站,各类论文网站大全
- 三体归零者和盘龙鸿蒙,三体中的神级文明 归零者 到底是一种怎样的存在?
- eventhandler java_事件驱动模型的简单Java实现
- html防止恶意广告,如何拦截恶意网页和弹窗广告?解决方法
- 完了,BBQ了。上班打游戏 ,被 大BOSS发现了。
热门文章
- 349-git各阶段版本回退命令
- 车载测试-HIL硬件在环测试
- 增量备份、差异备份、增量备份的区别?
- App中根据多个字段检索功能总结
- 学计算机的,为什么要用linux?
- android onCreate与onCreateView的区别
- Default encoder for format image2 (codec png) is probably disabled. Please choose an encoder manuall
- SeekBarVolumizer.java
- Linux日志文件系统
- 惊闻企业Web应用生成平台 活字格 V4.0 免费了,不单可视化设计器免费,服务器也免费!...