a8m / a8m/djson

Also consider *json.RawMessage

Abierto
#1 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Go
Estrellas
599
Forks
15
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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
```

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.