-
Notifications
You must be signed in to change notification settings - Fork 0
/
colour_test.go
104 lines (93 loc) · 2.65 KB
/
colour_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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
package main
import (
"github.com/lucasb-eyer/go-colorful"
"image/color"
"math"
"math/rand"
"testing"
)
func RandomColour() (a color.NRGBA) {
x := rand.Uint32()
a = color.NRGBA{uint8(x & 255), uint8((x >> 8) & 255), uint8((x >> 16) & 255), 255}
return
}
var bench_result int32
func BenchmarkColourDiffRgbInt(b *testing.B) {
var r int32
for n := 0; n < b.N; n++ {
r = ColourDiffRgb(RandomColour(), RandomColour())
}
bench_result = r
}
func BenchmarkColourDiffRgbFloat(b *testing.B) {
var r float64
rand.Seed(1)
for n := 0; n < b.N; n++ {
r = MakeColorful(RandomColour()).DistanceRgb(MakeColorful(RandomColour()))
}
bench_result = int32(r)
}
func BenchmarkColourDiffLab(b *testing.B) {
var r int32
rand.Seed(1)
for n := 0; n < b.N; n++ {
r = ColourDiffLab(RandomColour(), RandomColour())
}
bench_result = r
}
func BenchmarkColourDiffLabNoConversion(b *testing.B) {
var r float64
rand.Seed(1)
for n := 0; n < b.N; n++ {
r = MakeColorful(RandomColour()).DistanceLab(MakeColorful(RandomColour()))
}
bench_result = int32(r)
}
func sq(x float64) float64 {
return x * x
}
func BenchmarkColourDiffLabLinearRgb(b *testing.B) {
var r float64
rand.Seed(1)
for n := 0; n < b.N; n++ {
_x, _y := MakeColorful(RandomColour()), MakeColorful(RandomColour())
xr, xg, xb := _x.LinearRgb()
yr, yg, yb := _y.LinearRgb()
xx, xy, xz := colorful.LinearRgbToXyz(xr, xg, xb)
yx, yy, yz := colorful.LinearRgbToXyz(yr, yg, yb)
l1, a1, b1 := colorful.XyzToLab(xx, xy, xz)
l2, a2, b2 := colorful.XyzToLab(yx, yy, yz)
r = math.Sqrt(sq(l1-l2) + sq(a1-a2) + sq(b1-b2))
}
bench_result = int32(r)
}
func BenchmarkColourDiffLabFastLinearRgb(b *testing.B) {
var r float64
rand.Seed(1)
for n := 0; n < b.N; n++ {
_x, _y := MakeColorful(RandomColour()), MakeColorful(RandomColour())
xr, xg, xb := _x.FastLinearRgb()
yr, yg, yb := _y.FastLinearRgb()
xx, xy, xz := colorful.LinearRgbToXyz(xr, xg, xb)
yx, yy, yz := colorful.LinearRgbToXyz(yr, yg, yb)
l1, a1, b1 := colorful.XyzToLab(xx, xy, xz)
l2, a2, b2 := colorful.XyzToLab(yx, yy, yz)
r = math.Sqrt(sq(l1-l2) + sq(a1-a2) + sq(b1-b2))
}
bench_result = int32(r)
}
func BenchmarkColourDiffLabFasterLinearRgb(b *testing.B) {
var r float64
rand.Seed(1)
for n := 0; n < b.N; n++ {
_x, _y := MakeColorful(RandomColour()), MakeColorful(RandomColour())
xr, xg, xb := sq(_x.R), sq(_x.G), sq(_x.B)
yr, yg, yb := sq(_y.R), sq(_y.G), sq(_y.B)
xx, xy, xz := colorful.LinearRgbToXyz(xr, xg, xb)
yx, yy, yz := colorful.LinearRgbToXyz(yr, yg, yb)
l1, a1, b1 := colorful.XyzToLab(xx, xy, xz)
l2, a2, b2 := colorful.XyzToLab(yx, yy, yz)
r = math.Sqrt(sq(l1-l2) + sq(a1-a2) + sq(b1-b2))
}
bench_result = int32(r)
}