Path: blob/main/pkg/river/internal/value/decode_benchmarks_test.go
4096 views
package value_test12import (3"fmt"4"testing"56"github.com/grafana/agent/pkg/river/internal/value"7)89func BenchmarkObjectDecode(b *testing.B) {10b.StopTimer()1112// Create a value with 20 keys.13source := make(map[string]string, 20)14for i := 0; i < 20; i++ {15var (16key = fmt.Sprintf("key_%d", i+1)17value = fmt.Sprintf("value_%d", i+1)18)19source[key] = value20}2122sourceVal := value.Encode(source)2324b.StartTimer()25for i := 0; i < b.N; i++ {26var dst map[string]string27_ = value.Decode(sourceVal, &dst)28}29}3031func BenchmarkObject(b *testing.B) {32b.Run("Non-capsule", func(b *testing.B) {33b.StopTimer()3435vals := make(map[string]value.Value)36for i := 0; i < 20; i++ {37vals[fmt.Sprintf("%d", i)] = value.Int(int64(i))38}3940b.StartTimer()41for i := 0; i < b.N; i++ {42_ = value.Object(vals)43}44})4546b.Run("Capsule", func(b *testing.B) {47b.StopTimer()4849vals := make(map[string]value.Value)50for i := 0; i < 20; i++ {51vals[fmt.Sprintf("%d", i)] = value.Encapsulate(make(chan int))52}5354b.StartTimer()55for i := 0; i < b.N; i++ {56_ = value.Object(vals)57}58})59}6061func BenchmarkArray(b *testing.B) {62b.Run("Non-capsule", func(b *testing.B) {63b.StopTimer()6465var vals []value.Value66for i := 0; i < 20; i++ {67vals = append(vals, value.Int(int64(i)))68}6970b.StartTimer()71for i := 0; i < b.N; i++ {72_ = value.Array(vals...)73}74})7576b.Run("Capsule", func(b *testing.B) {77b.StopTimer()7879var vals []value.Value80for i := 0; i < 20; i++ {81vals = append(vals, value.Encapsulate(make(chan int)))82}8384b.StartTimer()85for i := 0; i < b.N; i++ {86_ = value.Array(vals...)87}88})89}909192