public void TestPerformanceOfGenAlgos_WithSize150x150_DoesNotThrow() { var mazeGenAlgos = KnownMazesTypes.GetAllMazeAlgos(); Stopwatch sw = new Stopwatch(); foreach (IMazeGenAlgorithm algo in mazeGenAlgos) { var maze = new TileMapMaze(150, 150); algo.SetCurrentMaze(maze); double[] tests = new double[10]; for (int i = 10 - 1; i >= 0; i--) { sw.Start(); algo.GenerateMazeWithTranformationList(); sw.Stop(); tests[i] = sw.ElapsedTicks; sw.Reset(); } var testsEnumerable = tests.AsEnumerable <double>(); double median = testsEnumerable.Median(); Log.Logger.Information($"GenerateMazeFullSize {algo.GetName()} {maze.GetWidth()}x{maze.GetHeight()} Elapsed={TimeSpan.FromTicks(((long)median))}"); } }
private static async Task CreateImageAndGifForAlgoAsync(IMazeGenAlgorithm i) { var drawMaze = new TileMapMaze(55, 55); drawMaze.OverrideAllMazeFields(MazeFieldType.Wall); await CreateMazeImageAndGif(i).ConfigureAwait(false); }
private static async Task CreateMazeImageAndGif(IMazeGenAlgorithm i) { MazeBuilder mazeBuilder = new MazeBuilder(); TileMapMaze drawMaze = new TileMapMaze(60, 60); drawMaze.OverrideAllMazeFields(); var maze = mazeBuilder .SetMazeAlgorithm(i) .SetDrawCallback(m => { if (i is RecursiveDivision) { //drawMaze.TransformMaze(m); //MazeImageCreator.CreateMazeImage(drawMaze, i.GetName(), 10, "./"); } }) .RecordMazeTransformationSteps(true) .SetMazeDimensions(60, 60) .Build(); await MazeImageCreator.CreateMazeAnimationGifAsync(mazeBuilder.GetMazeTransformationSteps(), drawMaze, i.GetName(), 5).ConfigureAwait(false); MazeImageCreator.CreateMazeImage(maze, i.GetName(), 5, "./"); Console.WriteLine($"Finished maze image and gif creation for algorithm={i.GetName()}."); }