xref: /aosp_15_r20/external/golang-protobuf/internal/encoding/json/bench_test.go (revision 1c12ee1efe575feb122dbf939ff15148a3b3e8f2)
1*1c12ee1eSDan Willemsen// Copyright 2019 The Go Authors. All rights reserved.
2*1c12ee1eSDan Willemsen// Use of this source code is governed by a BSD-style
3*1c12ee1eSDan Willemsen// license that can be found in the LICENSE file.
4*1c12ee1eSDan Willemsen
5*1c12ee1eSDan Willemsenpackage json_test
6*1c12ee1eSDan Willemsen
7*1c12ee1eSDan Willemsenimport (
8*1c12ee1eSDan Willemsen	"testing"
9*1c12ee1eSDan Willemsen
10*1c12ee1eSDan Willemsen	"google.golang.org/protobuf/internal/encoding/json"
11*1c12ee1eSDan Willemsen)
12*1c12ee1eSDan Willemsen
13*1c12ee1eSDan Willemsenfunc BenchmarkFloat(b *testing.B) {
14*1c12ee1eSDan Willemsen	input := []byte(`1.797693134862315708145274237317043567981e+308`)
15*1c12ee1eSDan Willemsen	for i := 0; i < b.N; i++ {
16*1c12ee1eSDan Willemsen		dec := json.NewDecoder(input)
17*1c12ee1eSDan Willemsen		val, err := dec.Read()
18*1c12ee1eSDan Willemsen		if err != nil {
19*1c12ee1eSDan Willemsen			b.Fatal(err)
20*1c12ee1eSDan Willemsen		}
21*1c12ee1eSDan Willemsen		if _, ok := val.Float(64); !ok {
22*1c12ee1eSDan Willemsen			b.Fatal("not a float")
23*1c12ee1eSDan Willemsen		}
24*1c12ee1eSDan Willemsen	}
25*1c12ee1eSDan Willemsen}
26*1c12ee1eSDan Willemsen
27*1c12ee1eSDan Willemsenfunc BenchmarkInt(b *testing.B) {
28*1c12ee1eSDan Willemsen	input := []byte(`922337203.6854775807e+10`)
29*1c12ee1eSDan Willemsen	for i := 0; i < b.N; i++ {
30*1c12ee1eSDan Willemsen		dec := json.NewDecoder(input)
31*1c12ee1eSDan Willemsen		val, err := dec.Read()
32*1c12ee1eSDan Willemsen		if err != nil {
33*1c12ee1eSDan Willemsen			b.Fatal(err)
34*1c12ee1eSDan Willemsen		}
35*1c12ee1eSDan Willemsen		if _, ok := val.Int(64); !ok {
36*1c12ee1eSDan Willemsen			b.Fatal("not an int64")
37*1c12ee1eSDan Willemsen		}
38*1c12ee1eSDan Willemsen	}
39*1c12ee1eSDan Willemsen}
40*1c12ee1eSDan Willemsen
41*1c12ee1eSDan Willemsenfunc BenchmarkString(b *testing.B) {
42*1c12ee1eSDan Willemsen	input := []byte(`"abcdefghijklmnopqrstuvwxyz0123456789\\n\\t"`)
43*1c12ee1eSDan Willemsen	for i := 0; i < b.N; i++ {
44*1c12ee1eSDan Willemsen		dec := json.NewDecoder(input)
45*1c12ee1eSDan Willemsen		val, err := dec.Read()
46*1c12ee1eSDan Willemsen		if err != nil {
47*1c12ee1eSDan Willemsen			b.Fatal(err)
48*1c12ee1eSDan Willemsen		}
49*1c12ee1eSDan Willemsen		_ = val.ParsedString()
50*1c12ee1eSDan Willemsen	}
51*1c12ee1eSDan Willemsen}
52*1c12ee1eSDan Willemsen
53*1c12ee1eSDan Willemsenfunc BenchmarkBool(b *testing.B) {
54*1c12ee1eSDan Willemsen	input := []byte(`true`)
55*1c12ee1eSDan Willemsen	for i := 0; i < b.N; i++ {
56*1c12ee1eSDan Willemsen		dec := json.NewDecoder(input)
57*1c12ee1eSDan Willemsen		val, err := dec.Read()
58*1c12ee1eSDan Willemsen		if err != nil {
59*1c12ee1eSDan Willemsen			b.Fatal(err)
60*1c12ee1eSDan Willemsen		}
61*1c12ee1eSDan Willemsen		_ = val.Bool()
62*1c12ee1eSDan Willemsen	}
63*1c12ee1eSDan Willemsen}
64