private static void PerformanceTest2() { var tracer = new StopwatchTracer(); Binder.SetTracer(tracer); var action = new BindingAction <string> { Action = TestExecute }; var ctx = "abc"; var binding = new Binding1 { Action = () => action.Action(ctx) }; IBinding binding2 = new Binding2 <string> { Action = action, Context = ctx }; var action3 = new BindingAction3 { Action = x => TestExecute((string)x) }; var binding3 = new Binding3 { Action = action3, Context = ctx }; var sw = new Stopwatch(); sw.Start(); for (int i = 0; i < 100000000; ++i) { //binding.Action(); //binding2.Execute(); binding3.Execute(); } sw.Stop(); // expected result: 400ms on average workstation Console.WriteLine($"Total: {sw.ElapsedMilliseconds}ms"); Console.WriteLine($"Bindings: {tracer.Elapsed.TotalMilliseconds}ms"); Console.ReadLine(); }
private static void PerformanceTest() { Binder.DebugMode = false; var tracer = new StopwatchTracer(); //Binder.SetTracer(tracer); var consumer = new Consumer(); var model1 = new Model { Data1 = 1.0, Data2 = 2.0, Data3 = 3.0, Data4 = 4.0, Data5 = 5.0, Data6 = 1.0, Data7 = 2.0, Data8 = 3.0, Data9 = 4.0, Data10 = 5.0 }; var model2 = new Model { Data1 = 2.0, Data2 = 3.0, Data3 = 4.0, Data4 = 5.0, Data5 = 6.0, Data6 = 2.0, Data7 = 3.0, Data8 = 4.0, Data9 = 5.0, Data10 = 6.0 }; var sw = new Stopwatch(); sw.Start(); for (int i = 0; i < 50000; ++i) { consumer.Source.Model = model1; if (consumer.FormattedAggregate != "30.0") { throw new Exception(); } consumer.Source.Model = model2; if (consumer.FormattedAggregate != "40.0") { throw new Exception(); } } sw.Stop(); // expected result: 400ms on average workstation Console.WriteLine($"Total: {sw.ElapsedMilliseconds}ms"); Console.WriteLine($"Bindings: {tracer.Elapsed.TotalMilliseconds}ms"); Console.ReadLine(); }