checkpoint
This commit is contained in:
16
Benchmarking/Benchmarking.csproj
Normal file
16
Benchmarking/Benchmarking.csproj
Normal file
@@ -0,0 +1,16 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<OutputType>Exe</OutputType>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="BenchmarkDotNet" Version="0.12.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Gameboard.ShogiUI.BoardState\Gameboard.ShogiUI.BoardState.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
58
Benchmarking/Benchmarks.cs
Normal file
58
Benchmarking/Benchmarks.cs
Normal file
@@ -0,0 +1,58 @@
|
||||
using BenchmarkDotNet.Attributes;
|
||||
using BenchmarkDotNet.Running;
|
||||
using Gameboard.ShogiUI.BoardState;
|
||||
using System;
|
||||
|
||||
namespace Benchmarking
|
||||
{
|
||||
public class Benchmarks
|
||||
{
|
||||
private 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 OnlyValidMoves_NewBoard()
|
||||
{
|
||||
var board = new ShogiBoard();
|
||||
foreach (var move in moves)
|
||||
{
|
||||
board.TryMove(move);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class Program
|
||||
{
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
BenchmarkRunner.Run<Benchmarks>();
|
||||
Console.WriteLine("Done");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user