All Pages tagged 'go-codec'
go-codec: Primer and How To Guide
Below, we will walk you through using the go-codec library for your serialization needs. go-codec is a high performance and feature rich library that provides idiomatic encoding and decoding support for the following formats:
Code Generation using go-codec - for 2-20X performance improvement
go-codec supports compile-time generation of encoders and decoders for named types, which does not incur the overhead of reflection in the typical case, giving 2X-20X performance improvement over the idiomatic runtime introspection mode. Idiomatic encoding and decoding types within go typically relies on the reflection capabilities of the go runtime. This affords flexible performance without the need for a pre-compilation step; the go types contain all the information needed and the runtime exposes the full types via reflection. However, introspecting the runtime to get this information has a noticeable overhead, which can be eliminated by a pre-compilation/code-generation step.
How go-codec achieves its stellar performance
They say premature optimization is the root of all evil. I say some layers of the stack MUST be optimal. The layer that does marshalling of data MUST be optimal. go-codec library supports code generation OR runtime reflection for its encoding and decoding. We will mostly discuss the runtime reflection in this article. It is easiest to compare this to other libraries.
Benchmarks!!! Serialization in Go!!!
Let’s have some fun with some numbers. In the serialization in go article , we discussed a number of types of encoding formats and their libraries in go.
Re-Introducing Go Codec Library: msgpack, binc, cbor, json and more formats
The go-codec library is a High Performance , Feature-Rich and Idiomatic Go encoding/decoding library for binc , msgpack , cbor , json , with runtime reflection or compile-time code generation support. View Source at http://github.com/ugorji/go . Sometime in 2013, we announced go-codec as a library for msgpack. The go-codec library has come a long way since then.
Serialization In Go
For data transfer between systems to occur, the sending side must encode the data structures into a stream of bytes, and the receiving side must efficiently decode the stream of bytes into a representative data structure. There is efficient and extensive support for this when using go as your language runtime. The standard library provides support for the following general-purpose encodings: