Tag: dynamicmethod

好奇心:为什么expression式编译时运行速度比最小的DynamicMethod快?

我目前正在做一些最后的措施优化,主要是为了好玩和学习,并发现了一些让我留下几个问题的东西。 一,问题: 当我通过使用DynamicMethod在内存中构造一个方法,并使用debugging器时,在反汇编视图中查看代码时,有什么办法让我进入生成的汇编代码? debugging器似乎只是对我整个方法 或者,如果这是不可能的,是否有可能以某种方式将生成的IL代码作为程序集保存到磁盘,以便我可以使用Reflector对其进行检查? 为什么我的简单添加方法(Int32 + Int32 => Int32)的Expression<…>版本比最小的DynamicMethod版本运行得更快? 这是一个简短而完整的程序,演示。 在我的系统上,输出是: DynamicMethod: 887 ms Lambda: 1878 ms Method: 1969 ms Expression: 681 ms 我期望lambda和方法调用具有更高的值,但DynamicMethod版本的速度始终低于30-50%(可能由于Windows和其他程序而异)。 任何人都知道原因? 这是该计划: using System; using System.Linq.Expressions; using System.Reflection.Emit; using System.Diagnostics; namespace Sandbox { public class Program { public static void Main(String[] args) { DynamicMethod method = new DynamicMethod("TestMethod", typeof(Int32), new […]