Go, JSON, performance

Pokud píšete nějaká to REST API, pak konzumujete, nebo i exportujete nějaká data. Nejpopulárnějším datovým formátem pak je JSON.

Go pak pro práci s JSON dokumenty nabízí vlastní, interní package json.

Pokud je pro vás performance alfou a omegou, mohla by se vám líbit knihovna Jingo, ktará nabízí několikanásobně vešší výkon, než defaultní Go knihovna.

LibIterns/opB/opallocs/op+/-
jingo10000000208004.8x
stdlib encoding/json1000000100816011x
gojay200000060551211.6x
json-iterator200000082516821.2x
import "github.com/bet365/jingo"

// we tag the structs using the same annotations
type MyPayload struct {
    Name string `json:"name"`
    Age int     `json:"age"`
    ID int      // anything we don't annotate doesn't get emitted. 
}

// Create an encoder, once, letting it know which type of struct we're going to be encoding. 
var enc = jingo.NewStructEncoder(MyPayload{})

func main() {
    p := MyPayload{
        Name: "Mr Payload",
        Age: 33,
    }
    // pull a buffer from the pool and pass it along with the struct to Marshal
    buf := jingo.NewBufferFromPool()
    enc.Marshal(&p, buf) // buf = {"name":"Mr Payload","age":33}
}