github.com/bingoohuang/gg@v0.0.0-20240325092523-45da7dee9335/pkg/yaml/benchmarks/benchmark_test.go (about) 1 package benchmarks 2 3 import ( 4 "testing" 5 6 "github.com/bingoohuang/gg/pkg/yaml" 7 goyaml2 "gopkg.in/yaml.v2" 8 goyaml3 "gopkg.in/yaml.v3" 9 ) 10 11 func Benchmark(b *testing.B) { 12 const src = `--- 13 id: 1 14 message: Hello, World 15 verified: true 16 elements: 17 - one 18 - 0.02 19 - null 20 - -inf 21 ` 22 type T struct { 23 ID int `yaml:"id"` 24 Message string `yaml:"message"` 25 Verified bool `yaml:"verified,omitempty"` 26 } 27 28 b.Run("gopkg.in/yaml.v2", func(b *testing.B) { 29 var t T 30 for i := 0; i < b.N; i++ { 31 if err := goyaml2.Unmarshal([]byte(src), &t); err != nil { 32 b.Fatal(err) 33 } 34 } 35 }) 36 b.Run("gopkg.in/yaml.v3", func(b *testing.B) { 37 var t T 38 for i := 0; i < b.N; i++ { 39 if err := goyaml3.Unmarshal([]byte(src), &t); err != nil { 40 b.Fatal(err) 41 } 42 } 43 }) 44 b.Run("github.com/bingoohuang/gg/pkg/yaml", func(b *testing.B) { 45 var t T 46 for i := 0; i < b.N; i++ { 47 if err := yaml.Unmarshal([]byte(src), &t); err != nil { 48 b.Fatal(err) 49 } 50 } 51 }) 52 }