54 lines
1.2 KiB
Go
54 lines
1.2 KiB
Go
package world
|
|
|
|
import (
|
|
"image/color"
|
|
"testing"
|
|
)
|
|
|
|
func BenchmarkBuildRenderPlanStageA_Candidates(b *testing.B) {
|
|
w := NewWorld(600, 600)
|
|
|
|
// Make the index/grid available.
|
|
w.IndexOnViewportChange(1000, 700, 1.0)
|
|
|
|
// Populate with enough objects to create duplicates across cells.
|
|
// Circles and lines create bbox indexing (more duplicates).
|
|
for i := 0; i < 2000; i++ {
|
|
_, _ = w.AddPoint(float64(i%600), float64((i*7)%600))
|
|
}
|
|
for i := 0; i < 1200; i++ {
|
|
_, _ = w.AddCircle(float64((i*11)%600), float64((i*13)%600), 8.0)
|
|
}
|
|
for i := 0; i < 1200; i++ {
|
|
x1 := float64((i*3 + 10) % 600)
|
|
y1 := float64((i*5 + 20) % 600)
|
|
x2 := float64((i*7 + 400) % 600)
|
|
y2 := float64((i*11 + 300) % 600)
|
|
_, _ = w.AddLine(x1, y1, x2, y2)
|
|
}
|
|
w.Reindex()
|
|
|
|
params := RenderParams{
|
|
ViewportWidthPx: 1000,
|
|
ViewportHeightPx: 700,
|
|
MarginXPx: 250,
|
|
MarginYPx: 175,
|
|
CameraXWorldFp: 300 * SCALE,
|
|
CameraYWorldFp: 300 * SCALE,
|
|
CameraZoom: 1.0,
|
|
Options: &RenderOptions{
|
|
BackgroundColor: color.RGBA{A: 255},
|
|
},
|
|
}
|
|
|
|
b.ReportAllocs()
|
|
b.ResetTimer()
|
|
|
|
for i := 0; i < b.N; i++ {
|
|
_, err := w.buildRenderPlanStageA(params)
|
|
if err != nil {
|
|
b.Fatalf("build plan: %v", err)
|
|
}
|
|
}
|
|
}
|