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  }