Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Also consider *json.RawMessage #1

Open
pschultz opened this issue Sep 30, 2016 · 0 comments
Open

Also consider *json.RawMessage #1

pschultz opened this issue Sep 30, 2016 · 0 comments

Comments

@pschultz
Copy link

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.

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
tree700-pl added a commit to tree700-pl/djson that referenced this issue Nov 24, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant