package imdraw_test import ( "fmt" "math/rand" "testing" "github.com/faiface/pixel" "github.com/faiface/pixel/imdraw" ) func BenchmarkPush(b *testing.B) { imd := imdraw.New(nil) for i := 0; i < b.N; i++ { imd.Push(pixel.V(123.1, 99.4)) } } func pointLists(counts ...int) [][]pixel.Vec { lists := make([][]pixel.Vec, len(counts)) for i := range lists { lists[i] = make([]pixel.Vec, counts[i]) for j := range lists[i] { lists[i][j] = pixel.V( rand.Float64()*5000-2500, rand.Float64()*5000-2500, ) } } return lists } func BenchmarkLine(b *testing.B) { lists := pointLists(2, 5, 10, 100, 1000) for _, pts := range lists { b.Run(fmt.Sprintf("%d", len(pts)), func(b *testing.B) { imd := imdraw.New(nil) for i := 0; i < b.N; i++ { imd.Push(pts...) imd.Line(1) } }) } } func BenchmarkRectangle(b *testing.B) { lists := pointLists(2, 10, 100, 1000) for _, pts := range lists { b.Run(fmt.Sprintf("%d", len(pts)), func(b *testing.B) { imd := imdraw.New(nil) for i := 0; i < b.N; i++ { imd.Push(pts...) imd.Rectangle(0) } }) } } func BenchmarkPolygon(b *testing.B) { lists := pointLists(3, 10, 100, 1000) for _, pts := range lists { b.Run(fmt.Sprintf("%d", len(pts)), func(b *testing.B) { imd := imdraw.New(nil) for i := 0; i < b.N; i++ { imd.Push(pts...) imd.Polygon(0) } }) } } func BenchmarkEllipseFill(b *testing.B) { lists := pointLists(1, 10, 100, 1000) for _, pts := range lists { b.Run(fmt.Sprintf("%d", len(pts)), func(b *testing.B) { imd := imdraw.New(nil) for i := 0; i < b.N; i++ { imd.Push(pts...) imd.Ellipse(pixel.V(50, 100), 0) } }) } } func BenchmarkEllipseOutline(b *testing.B) { lists := pointLists(1, 10, 100, 1000) for _, pts := range lists { b.Run(fmt.Sprintf("%d", len(pts)), func(b *testing.B) { imd := imdraw.New(nil) for i := 0; i < b.N; i++ { imd.Push(pts...) imd.Ellipse(pixel.V(50, 100), 1) } }) } }