寄存器模式

寄存器模式是ILRuntime2.0版引入的专用于优化大规模数值计算的执行模式。该模式通过ILRuntime自己的JIT Compiler将原始DLL的MSIL指令集转换成一个自定义的基于寄存器的指令集,再进行解译执行。由于该JIT编译的结果是ILRuntime自己设计的虚拟指令集,并不是真实硬件指令集,因此可以毫无问题的在iOS等平台上执行

使用方法

开启寄存器模式,主要有2个途径:

//第一种方式是在AppDomain的构造函数的参数中,指定全局希望使用的JIT模式
appdomain = new ILRuntime.Runtime.Enviorment.AppDomain(ILRuntimeJITFlags.JITOnDemand);

//第二种方式为在指定的类或者方法上指定用于该类或者方法的JIT模式
[ILRuntimeJIT(ILRuntimeJITFlags.JITImmediately)]
class foo
{
[ILRuntimeJIT(ILRuntimeJITFlags.NoJIT)]
public void bar()
{
//该方法的内容将不会开启寄存器模式
}

public void bar2()
{
//该方法的内容将按照所在类指定的模式,也就是立即JIT模式运行
}
}

ILRuntime的JIT模式有以下几种:

寄存器模式的性能特点

当ILRuntime运行在寄存器模式时,主要会有以下性能特征:

使用建议

ILRuntime推荐的使用模式有2种:

第一种用法对现有实现影响最小,仅在需要优化处开启,可以比较精准的控制执行效果。如果并不知道在什么时候应该使用何种模式,也可以直接使用JITOnDemand模式,让ILRuntime自行决定运行模式,在大多数情况下是能达到不错的性能平衡的。