protected ComponentRenderingScenarioBase(string name) { Name = name; var cyclesOption = new CommandOption("--cycles", CommandOptionType.SingleValue); Options.Add(cyclesOption); OnExecute(() => { var numCycles = cyclesOption.HasValue() ? int.Parse(cyclesOption.Value(), CultureInfo.InvariantCulture) : 1; var serviceCollection = new ServiceCollection(); PopulateServiceCollection(serviceCollection); var serviceProvider = serviceCollection.BuildServiceProvider(); var loggerFactory = serviceProvider.GetRequiredService <ILoggerFactory>(); var renderer = new ConsoleHostRenderer(serviceProvider, loggerFactory); var startTime = DateTime.Now; ExecuteAsync(renderer, numCycles).Wait(); var duration = DateTime.Now - startTime; var durationPerCycle = (duration / numCycles).TotalMilliseconds; Console.WriteLine($"{Name}: {durationPerCycle:F1}ms per cycle (cycles tested: {numCycles})"); return(0); }); }
protected override async Task ExecuteAsync(ConsoleHostRenderer renderer, int numCycles) { var gridType = _gridTypeOption.HasValue() ? (GridRendering.RenderMode)Enum.Parse(typeof(GridRendering.RenderMode), _gridTypeOption.Value(), true) : GridRendering.RenderMode.FastGrid; for (var i = 0; i < numCycles; i++) { var hostPage = new GridRendering { SelectedRenderMode = gridType }; hostPage.Show(); var componentId = renderer.AssignRootComponentId(hostPage); await renderer.RenderRootComponentAsync(componentId); hostPage.ChangePage(); await renderer.RenderRootComponentAsync(componentId); } }
protected abstract Task ExecuteAsync(ConsoleHostRenderer renderer, int numCycles);