|
|
@@ -47,4 +47,63 @@ func Benchmark_json_int(b *testing.B) {
|
|
|
}
|
|
|
```
|
|
|
|
|
|
-3000000 505 ns/op (8x slower)
|
|
|
+3000000 505 ns/op (8x slower)
|
|
|
+
|
|
|
+# array
|
|
|
+
|
|
|
+```
|
|
|
+func Benchmark_jsoniter_array(b *testing.B) {
|
|
|
+ for n := 0; n < b.N; n++ {
|
|
|
+ iter := ParseString(`[1,2,3]`)
|
|
|
+ for iter.ReadArray() {
|
|
|
+ iter.ReadUint64()
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+10000000 189 ns/op
|
|
|
+
|
|
|
+```
|
|
|
+func Benchmark_json_array(b *testing.B) {
|
|
|
+ for n := 0; n < b.N; n++ {
|
|
|
+ result := []interface{}{}
|
|
|
+ json.Unmarshal([]byte(`[1,2,3]`), &result)
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+1000000 1327 ns/op
|
|
|
+
|
|
|
+# object
|
|
|
+
|
|
|
+```
|
|
|
+func Benchmark_jsoniter_object(b *testing.B) {
|
|
|
+ for n := 0; n < b.N; n++ {
|
|
|
+ iter := ParseString(`{"field1": "1", "field2": 2}`)
|
|
|
+ obj := TestObj{}
|
|
|
+ for field := iter.ReadObject(); field != ""; field = iter.ReadObject() {
|
|
|
+ switch field {
|
|
|
+ case "field1":
|
|
|
+ obj.Field1 = iter.ReadString()
|
|
|
+ case "field2":
|
|
|
+ obj.Field2 = iter.ReadUint64()
|
|
|
+ default:
|
|
|
+ iter.ReportError("bind object", "unexpected field")
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+5000000 401 ns/op
|
|
|
+
|
|
|
+```
|
|
|
+func Benchmark_json_object(b *testing.B) {
|
|
|
+ for n := 0; n < b.N; n++ {
|
|
|
+ result := TestObj{}
|
|
|
+ json.Unmarshal([]byte(`{"field1": "1", "field2": 2}`), &result)
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+1000000 1318 ns/op
|