Expression.Compile vs Lambda的性能,直接调用 vs 虚拟调用
- 论坛
- Expression.Compile vs Lambda的性能,直接调用 vs 虚拟调用
20 浏览
Expression.Compile vs Lambda的性能,直接调用 vs 虚拟调用
我对代码中的Expression.Compile与 lambda 表达式的性能进行了好奇探究,以及直接方法使用与直接方法调用的比较,还有直接方法调用与虚方法调用的比较(伪代码):
var foo = new Foo(); var iFoo = (IFoo)foo; foo.Bar(); iFoo.Bar(); (() => foo.Bar())(); (() => iFoo.Bar())(); Expression.Compile(foo, Foo.Bar)(); Expression.Compile(iFoo, IFoo.Bar)(); Expression.CompileToMethod(foo, Foo.Bar); Expression.CompileToMethod(iFoo, IFoo.Bar); MethodInfo.Invoke(foo, Foo.Bar); MethodInfo.Invoke(iFoo, IFoo.Bar);