using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Running; using Gameboard.ShogiUI.BoardState; using System; namespace Benchmarking { public class Benchmarks { private readonly Move[] moves; public Benchmarks() { moves = new[] { // P1 Rook new Move { From = new BoardVector(7, 1), To = new BoardVector(4, 1) }, // P2 Gold new Move { From = new BoardVector(3, 8), To = new BoardVector(2, 7) }, // P1 Pawn new Move { From = new BoardVector(4, 2), To = new BoardVector(4, 3) }, // P2 other Gold new Move { From = new BoardVector(5, 8), To = new BoardVector(6, 7) }, // P1 same Pawn new Move { From = new BoardVector(4, 3), To = new BoardVector(4, 4) }, // P2 Pawn new Move { From = new BoardVector(4, 6), To = new BoardVector(4, 5) }, // P1 Pawn takes P2 Pawn new Move { From = new BoardVector(4, 4), To = new BoardVector(4, 5) }, // P2 King new Move { From = new BoardVector(4, 8), To = new BoardVector(4, 7) }, // P1 Pawn promotes new Move { From = new BoardVector(4, 5), To = new BoardVector(4, 6), IsPromotion = true }, // P2 King retreat new Move { From = new BoardVector(4, 7), To = new BoardVector(4, 8) }, }; } [Benchmark] public void One() { var board = new ShogiBoard(); foreach (var move in moves) { board.TryMove(move); } } [Benchmark] public void Two() { var board = new ShogiBoard(); foreach (var move in moves) { //board.TryMove2(move); } } } public class Program { public static void Main(string[] args) { BenchmarkRunner.Run(); Console.WriteLine("Done"); } } }