70 lines
1.8 KiB
C#
70 lines
1.8 KiB
C#
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<Benchmarks>();
|
|
Console.WriteLine("Done");
|
|
}
|
|
}
|
|
}
|