Expression.Compile vs Lambda的性能,直接调用 vs 虚拟调用

20 浏览
0 Comments

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);

0