public static void Run() { Console.WriteLine("1)"); DateTime start = DateTime.Now; DynamicMethod dm = Util.Compile("X = abs((5 - Y) * 3);", typeof(TestOne)); Console.WriteLine(DateTime.Now - start); TestOne obj = new TestOne(); start = DateTime.Now; for (int i = 0; i < 100000; i++) { dm.Invoke(null, new object[] { obj }); } Console.WriteLine(DateTime.Now - start); DMCall d = (DMCall)dm.CreateDelegate(typeof(DMCall), obj); start = DateTime.Now; for (int i = 0; i < 100000; i++) { d(); } Console.WriteLine(DateTime.Now - start); Console.WriteLine(obj.X); }
public static void Run() { Console.WriteLine("1)"); DateTime start = DateTime.Now; DynamicMethod dm = Util.Compile("X = abs((5 - Y) * 3);", typeof(TestOne)); Console.WriteLine(DateTime.Now - start); TestOne obj = new TestOne(); start = DateTime.Now; for (int i = 0; i < 100000; i++) dm.Invoke(null, new object[] { obj }); Console.WriteLine(DateTime.Now - start); DMCall d = (DMCall) dm.CreateDelegate(typeof(DMCall), obj); start = DateTime.Now; for (int i = 0; i < 100000; i++) d(); Console.WriteLine(DateTime.Now - start); Console.WriteLine(obj.X); }