a8m / a8m/djson

Also consider *json.RawMessage

未关闭
#1 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Go
星标
599
派生
15
PR 合并指标
30 天内没有已合并 PR

描述

You may want to include `map[string]*json.RawMessage` in your benchmarks.

That is on par with djson for the medium sample and faster for the large sample. json.RawMessage is the recommended solution for partial json parsing with the standard library and enough if all you want to do is add or remove fields from a document.

``` go
func BenchmarkEncodingJsonParser_RawMessage(b *testing.B) {
b.Run("small", func(b *testing.B) {
for i := 0; i < b.N; i++ {
data := make(map[string]*json.RawMessage)
json.Unmarshal(smallFixture, &data)
}
})

b.Run("medium", func(b *testing.B) {
for i := 0; i < b.N; i++ {
data := make(map[string]*json.RawMessage)
json.Unmarshal(mediumFixture, &data)
}
})

b.Run("large", func(b *testing.B) {
for i := 0; i < b.N; i++ {
data := make(map[string]*json.RawMessage)
json.Unmarshal(largeFixture, &data)
}
})
}
```

```
# Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz
BenchmarkEncodingJsonParser/small-8 200000 11520 ns/op
BenchmarkEncodingJsonParser/medium-8 30000 48620 ns/op
BenchmarkEncodingJsonParser/large-8 2000 872325 ns/op
BenchmarkEncodingJsonParser_RawMessage/small-8 100000 10146 ns/op
BenchmarkEncodingJsonParser_RawMessage/medium-8 50000 23538 ns/op
BenchmarkEncodingJsonParser_RawMessage/large-8 3000 340215 ns/op
BenchmarkDJsonParser/small-8 500000 2865 ns/op
BenchmarkDJsonParser/medium-8 50000 25407 ns/op
BenchmarkDJsonParser/large-8 3000 478260 ns/op
BenchmarkDJsonAllocString/small-8 1000000 2520 ns/op
BenchmarkDJsonAllocString/medium-8 100000 21715 ns/op
BenchmarkDJsonAllocString/large-8 5000 422390 ns/op
```

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。