Add benchmarks
This commit is contained in:
parent
2fefcf2fad
commit
6ed908b1c2
1 changed files with 88 additions and 4 deletions
|
@ -1,14 +1,98 @@
|
|||
package tabula
|
||||
|
||||
import (
|
||||
"log"
|
||||
"fmt"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestBoard(t *testing.T) {
|
||||
log.Println("test")
|
||||
b := NewBoard()
|
||||
b[SpaceRoll1] = 1
|
||||
b[SpaceRoll2] = 2
|
||||
b = b.Move(24, 23, 1)
|
||||
got, expected := b[23], int8(1)
|
||||
if got != expected {
|
||||
t.Errorf("unexpected space %d value: expected %d: got %d", 23, expected, got)
|
||||
}
|
||||
got, expected = b[24], 1
|
||||
if got != expected {
|
||||
t.Errorf("unexpected space %d value: expected %d: got %d", 24, expected, got)
|
||||
}
|
||||
got, expected = b[22], 0
|
||||
if got != expected {
|
||||
t.Errorf("unexpected space %d value: expected %d: got %d", 22, expected, got)
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkBoard(b *testing.B) {
|
||||
log.Println("test")
|
||||
func BenchmarkAvailable(b *testing.B) {
|
||||
type testCase struct {
|
||||
roll1, roll2, roll3, roll4 int8
|
||||
}
|
||||
cases := []*testCase{
|
||||
{1, 1, 1, 1},
|
||||
{2, 2, 2, 2},
|
||||
{3, 3, 3, 3},
|
||||
{4, 4, 4, 4},
|
||||
{5, 5, 5, 5},
|
||||
{6, 6, 6, 6},
|
||||
{1, 2, 0, 0},
|
||||
{2, 3, 0, 0},
|
||||
{3, 4, 0, 0},
|
||||
{4, 5, 0, 0},
|
||||
{5, 6, 0, 0},
|
||||
}
|
||||
for _, c := range cases {
|
||||
b.Run(fmt.Sprintf("%d-%d", c.roll1, c.roll2), func(b *testing.B) {
|
||||
board := NewBoard()
|
||||
board[SpaceRoll1] = c.roll1
|
||||
board[SpaceRoll2] = c.roll2
|
||||
board[SpaceRoll3] = c.roll3
|
||||
board[SpaceRoll4] = c.roll4
|
||||
|
||||
var available [][]int
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
available = board.Available(1)
|
||||
}
|
||||
|
||||
_ = available
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkAnalyze(b *testing.B) {
|
||||
type testCase struct {
|
||||
roll1, roll2, roll3, roll4 int8
|
||||
}
|
||||
cases := []*testCase{
|
||||
{1, 1, 1, 1},
|
||||
{2, 2, 2, 2},
|
||||
{3, 3, 3, 3},
|
||||
{4, 4, 4, 4},
|
||||
{5, 5, 5, 5},
|
||||
{6, 6, 6, 6},
|
||||
{1, 2, 0, 0},
|
||||
{2, 3, 0, 0},
|
||||
{3, 4, 0, 0},
|
||||
{4, 5, 0, 0},
|
||||
{5, 6, 0, 0},
|
||||
}
|
||||
for _, c := range cases {
|
||||
b.Run(fmt.Sprintf("%d-%d", c.roll1, c.roll2), func(b *testing.B) {
|
||||
board := NewBoard()
|
||||
board[SpaceRoll1] = c.roll1
|
||||
board[SpaceRoll2] = c.roll2
|
||||
board[SpaceRoll3] = c.roll3
|
||||
board[SpaceRoll4] = c.roll4
|
||||
available := board.Available(1)
|
||||
|
||||
var analysis []*Analysis
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
analysis = board.Analyze(1, available)
|
||||
}
|
||||
|
||||
_ = analysis
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue