blob: db7d761ee205706065c96ed3a75d7551e07aed9c [file] [log] [blame]
Herbie Onga3421952019-03-21 18:12:26 -07001// Copyright 2019 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5package json_test
6
7import (
8 "testing"
9
Damien Neile89e6242019-05-13 23:55:40 -070010 "google.golang.org/protobuf/internal/encoding/json"
Herbie Onga3421952019-03-21 18:12:26 -070011)
12
13func BenchmarkFloat(b *testing.B) {
Herbie Ong670d8082019-03-31 19:10:33 -070014 input := []byte(`1.797693134862315708145274237317043567981e+308`)
Herbie Onga3421952019-03-21 18:12:26 -070015 for i := 0; i < b.N; i++ {
16 dec := json.NewDecoder(input)
17 val, err := dec.Read()
18 if err != nil {
19 b.Fatal(err)
20 }
21 _, err = val.Float(64)
22 if err != nil {
23 b.Fatal(err)
24 }
25 }
26}
27
28func BenchmarkInt(b *testing.B) {
Herbie Ong670d8082019-03-31 19:10:33 -070029 input := []byte(`922337203.6854775807e+10`)
Herbie Onga3421952019-03-21 18:12:26 -070030 for i := 0; i < b.N; i++ {
31 dec := json.NewDecoder(input)
32 val, err := dec.Read()
33 if err != nil {
34 b.Fatal(err)
35 }
36 _, err = val.Int(64)
37 if err != nil {
38 b.Fatal(err)
39 }
40 }
41}
Herbie Ong670d8082019-03-31 19:10:33 -070042
43func BenchmarkString(b *testing.B) {
44 input := []byte(`"abcdefghijklmnopqrstuvwxyz0123456789\\n\\t"`)
45 for i := 0; i < b.N; i++ {
46 dec := json.NewDecoder(input)
47 val, err := dec.Read()
48 if err != nil {
49 b.Fatal(err)
50 }
51 _ = val.String()
52 }
53}
54
55func BenchmarkBool(b *testing.B) {
56 input := []byte(`true`)
57 for i := 0; i < b.N; i++ {
58 dec := json.NewDecoder(input)
59 val, err := dec.Read()
60 if err != nil {
61 b.Fatal(err)
62 }
63 _, err = val.Bool()
64 if err != nil {
65 b.Fatal(err)
66 }
67 }
68}