-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain_test.go
89 lines (69 loc) · 1.6 KB
/
main_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
package main
import (
"image"
_ "image/png"
"os"
"testing"
"time"
"golang.org/x/sys/unix"
)
func BenchmarkBounce(b *testing.B) {
x1 := 1080
x2 := 1920
x3 := 0
x4 := 0
x, y, w, h = &x4, &x3, &x2, &x1
fd, err := os.OpenFile("/dev/fb0", os.O_RDWR, 0644)
if err != nil {
b.Fatalf("Failed to open framebuffer: %v", err)
}
defer fd.Close()
mem, err := unix.Mmap(int(fd.Fd()), 0, *w**h*4, unix.PROT_WRITE, unix.MAP_SHARED)
if err != nil {
b.Fatalf("failed to mmap: %v", err)
}
file, err := os.Open("./sofa-cat.png")
if err != nil {
b.Fatalf("Unable to open image file: %v", err)
}
origMem = make([]byte, len(mem))
copy(origMem, mem)
defer file.Close()
img, _, err := image.Decode(file)
if err != nil {
b.Fatalf("Unable to decode image: %v", err)
}
runFunc = runBounce
startTime := time.Now()
go runFunc(img, &mem, *x, *y)
for time.Since(startTime) < time.Second*5 {
}
}
func BenchmarkDraw(b *testing.B) {
x1 := 1080
x2 := 1920
x3 := 0
x4 := 0
x, y, w, h = &x4, &x3, &x2, &x1
fd, err := os.OpenFile("/dev/fb0", os.O_RDWR, 0644)
if err != nil {
b.Fatalf("Failed to open framebuffer: %v", err)
}
defer fd.Close()
mem, err := unix.Mmap(int(fd.Fd()), 0, *w**h*4, unix.PROT_WRITE, unix.MAP_SHARED)
if err != nil {
b.Fatalf("failed to mmap: %v", err)
}
file, err := os.Open("./sofa-cat.png")
if err != nil {
b.Fatalf("Unable to open image file: %v", err)
}
origMem = make([]byte, len(mem))
copy(origMem, mem)
defer file.Close()
img, _, err := image.Decode(file)
if err != nil {
b.Fatalf("Unable to decode image: %v", err)
}
runFunc(img, &mem, *x, *y)
}