3 ms·
I think you left off the key part of his point, namely "when recursively parsing unknown json data structures". json parsing in Go uses reflection, which not o
by stock_toaster 12y ago
I think you left off the key part of his point, namely "when recursively parsing unknown json data structures".
json parsing in Go uses reflection, which not only means it is slow, but if your input is not consistent (like say.. a log file with 20 different possible formats), it can be quite painful and very verbose.
- wtetzner 12y agoIf only the language had algebraic data types.
- jstarks 12y agoDo you have any resources demonstrating that JSON parsing in Go is slow?
- stock_toaster 12y agoHere are a few google results: * http://erickt.github.io/blog/2014/11/03/performance/ http://erickt.github.io/blog/2014/11/03/performance/ and http://erickt.github.io/blog/2014/11/11/benchmarks/ http://erickt.github.io/blog/2014/11/11/benchmarks/ * https://github.com/ugorji/go-codec-bench https://github.com/ugorji/go-codec-bench * https://github.com/golang/go/issues/5683 https://github.com/golang/go/issues/5683 In my own testing it was faster (even with ffjson) to pre-clean my data in cpython or pypy, and then emit some intermediary format (like capnproto) for the go code to consume. I was parsing huge files full of lots of non-uniform json with many formats. For most use cases though, the fact that json is "slow" is probably not a huge factor, as network IO or something else is likely the gating factor. For those uncommon cases though, I wish the native json lib in Go was faster.
- smt88 12y agoI believe you that it's slow, but I'm not sure I know enough to understand how it's a knock against Go as a language. Is it something that's impossible to fix without changing the syntax? Anyway, you could always use a highly-optimized JSON parser written in C[1], so it shouldn't be a deal-breaker for anyone interested in Go. 1. https://golang.org/cmd/cgo https://golang.org/cmd/cgo