forked from remogatto/clingon
/
sdlrenderer_benchmark_test.go
88 lines (75 loc) · 1.83 KB
/
sdlrenderer_benchmark_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package clingon
import (
"fmt"
"github.com/0xe2-0x9a-0x9b/Go-SDL/sdl"
"github.com/0xe2-0x9a-0x9b/Go-SDL/ttf"
"testing"
)
var (
appSurface *sdl.Surface
sdlrenderer *SDLRenderer
)
func initSDL() {
if sdl.Init(sdl.INIT_VIDEO) != 0 {
panic(sdl.GetError())
}
if ttf.Init() != 0 {
panic(sdl.GetError())
}
font := ttf.OpenFont("testdata/VeraMono.ttf", 20)
if font == nil {
panic(sdl.GetError())
}
appSurface = sdl.SetVideoMode(640, 480, 32, 0)
sdlrenderer = NewSDLRenderer(sdl.CreateRGBSurface(sdl.SRCALPHA, 640, 480, 32, 0, 0, 0, 0), font)
sdlrenderer.GetSurface().SetAlpha(sdl.SRCALPHA, 0xaa)
console = NewConsole(nil)
go func() {
for {
select {
case rects := <-sdlrenderer.UpdatedRectsCh():
render(rects)
}
}
}()
render(nil)
}
func render(updatedRects []sdl.Rect) {
if updatedRects == nil {
appSurface.Flip()
} else {
for _, r := range updatedRects {
appSurface.Blit(&r, sdlrenderer.GetSurface(), &r)
appSurface.UpdateRect(int32(r.X), int32(r.Y), uint32(r.W), uint32(r.H))
}
}
}
func BenchmarkRenderConsoleBlended(b *testing.B) {
b.StopTimer()
initSDL()
var strings []string = make([]string, 0)
for i := 0; i < 1000; i++ {
strings = append(strings, fmt.Sprintf("Line %d %s", i, "The quick brown fox jumps over the lazy dog"))
}
console.appendLines(strings)
sdlrenderer.Blended = true
b.StartTimer()
for i := 0; i < b.N; i++ {
sdlrenderer.renderConsole(console)
sdlrenderer.render(nil)
}
}
func BenchmarkRenderConsoleSolid(b *testing.B) {
b.StopTimer()
initSDL()
var strings []string = make([]string, 0)
for i := 0; i < 1000; i++ {
strings = append(strings, fmt.Sprintf("Line %d %s", i, "The quick brown fox jumps over the lazy dog"))
}
console.appendLines(strings)
b.StartTimer()
for i := 0; i < b.N; i++ {
sdlrenderer.renderConsole(console)
sdlrenderer.render(nil)
}
}