Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
aos
GitHub Repository: aos/grafana-agent
Path: blob/main/pkg/river/internal/value/decode_benchmarks_test.go
4096 views
1
package value_test
2
3
import (
4
"fmt"
5
"testing"
6
7
"github.com/grafana/agent/pkg/river/internal/value"
8
)
9
10
func BenchmarkObjectDecode(b *testing.B) {
11
b.StopTimer()
12
13
// Create a value with 20 keys.
14
source := make(map[string]string, 20)
15
for i := 0; i < 20; i++ {
16
var (
17
key = fmt.Sprintf("key_%d", i+1)
18
value = fmt.Sprintf("value_%d", i+1)
19
)
20
source[key] = value
21
}
22
23
sourceVal := value.Encode(source)
24
25
b.StartTimer()
26
for i := 0; i < b.N; i++ {
27
var dst map[string]string
28
_ = value.Decode(sourceVal, &dst)
29
}
30
}
31
32
func BenchmarkObject(b *testing.B) {
33
b.Run("Non-capsule", func(b *testing.B) {
34
b.StopTimer()
35
36
vals := make(map[string]value.Value)
37
for i := 0; i < 20; i++ {
38
vals[fmt.Sprintf("%d", i)] = value.Int(int64(i))
39
}
40
41
b.StartTimer()
42
for i := 0; i < b.N; i++ {
43
_ = value.Object(vals)
44
}
45
})
46
47
b.Run("Capsule", func(b *testing.B) {
48
b.StopTimer()
49
50
vals := make(map[string]value.Value)
51
for i := 0; i < 20; i++ {
52
vals[fmt.Sprintf("%d", i)] = value.Encapsulate(make(chan int))
53
}
54
55
b.StartTimer()
56
for i := 0; i < b.N; i++ {
57
_ = value.Object(vals)
58
}
59
})
60
}
61
62
func BenchmarkArray(b *testing.B) {
63
b.Run("Non-capsule", func(b *testing.B) {
64
b.StopTimer()
65
66
var vals []value.Value
67
for i := 0; i < 20; i++ {
68
vals = append(vals, value.Int(int64(i)))
69
}
70
71
b.StartTimer()
72
for i := 0; i < b.N; i++ {
73
_ = value.Array(vals...)
74
}
75
})
76
77
b.Run("Capsule", func(b *testing.B) {
78
b.StopTimer()
79
80
var vals []value.Value
81
for i := 0; i < 20; i++ {
82
vals = append(vals, value.Encapsulate(make(chan int)))
83
}
84
85
b.StartTimer()
86
for i := 0; i < b.N; i++ {
87
_ = value.Array(vals...)
88
}
89
})
90
}
91
92