public async Task Test_performanceNormal() { var mockService = new MockService(); var options = MockService.GetCommandOptions("NormalCommand", "NormalMethod"); var sequence = 100; var normalCommandTasks = Enumerable.Range(0, sequence).Select(async i => { var stp = Stopwatch.StartNew(); var command = new NormalHystrixCommand(options, mockService, _loggerFactory); var result = await command.ExecuteAsync(); stp.Stop(); return(Tuple.Create(result, $"{i.ToString("00000")} : {stp.Elapsed}")); }); var stopwatch = new Stopwatch(); stopwatch = Stopwatch.StartNew(); var customresult = Task.WhenAll(normalCommandTasks.ToArray()).Result; var normalElapsed = stopwatch.Elapsed; using (var customCommands = new StreamWriter("c:/temp/NormalAll.log", true)) await customCommands.WriteAsync(customresult.Select(x => x.Item2).Aggregate((a, b) => $"{a}{Environment.NewLine}{b}")); using (var writer = new StreamWriter("c:/temp/normal.log", true)) writer.WriteLine("Normal Elapse: " + normalElapsed.TotalSeconds.ToString()); }
public async Task Test_performance() { var mockService = new MockService(); var provider = new HystrixCommandProvider(_loggerFactory, _configuration); var options = MockService.GetCommandOptions("NormalCommand", "NormalMethod"); var methodInfo = typeof(MockService).GetMethod(nameof(MockService.MethodWithoutParametersTestAsync), new Type[] { }); var sequence = 100; var customCommandTasks = Enumerable.Range(0, sequence).Select(async i => { var stp = Stopwatch.StartNew(); dynamic customcommand = provider.ExecuteAsync(methodInfo, mockService); var result = await await customcommand; stp.Stop(); return(Tuple.Create(result, $"{i.ToString("00000")} : {stp.Elapsed}")); }); var normalCommandTasks = Enumerable.Range(0, sequence).Select(async i => { var stp = Stopwatch.StartNew(); var command = new NormalHystrixCommand(options, mockService, _loggerFactory); var result = await command.ExecuteAsync(); stp.Stop(); return(Tuple.Create(result, $"{i.ToString("00000")} : {stp.Elapsed}")); }); var stopwatch = new Stopwatch(); stopwatch = Stopwatch.StartNew(); var customresult = Task.WhenAll(customCommandTasks.ToArray()).Result; var customTimeElapse = stopwatch.Elapsed; using (var customCommands = new StreamWriter("c:/temp/CustomCommands.log", true)) await customCommands.WriteAsync(customresult.Select(x => x.Item2).Aggregate((a, b) => $"{a}{Environment.NewLine}{b}")); stopwatch.Reset(); stopwatch = Stopwatch.StartNew(); var normalResult = Task.WhenAll(normalCommandTasks.ToArray()).Result; var normalTimeElapse = stopwatch.Elapsed; using (var normalCommands = new StreamWriter("c:/temp/NormalCommands.log", true)) await normalCommands.WriteAsync(normalResult.Select(x => x.Item2).Aggregate((a, b) => $"{a}{Environment.NewLine}{b}")); var dif = customTimeElapse.TotalSeconds - normalTimeElapse.TotalSeconds; var writerCustom = new StreamWriter("c:/temp/CustomCommands.log", true); using (var writer = new StreamWriter("c:/temp/teste.log", true)) { writer.WriteLine("Result of time: " + dif.ToString()); } dif.Should().BeInRange(-2.30, 2.30); }