我正在Go中编写一个应用程序,该应用程序使用编码/目标在节点之间通过UDP发送结构和切片。它工作正常,但我注意到encoding / json也具有类似的API。搜索并找到以下信息(https://golang.org/pkg/encoding/):
gob软件包gob管理gob的流-编码器(发送器)和解码器(接收器)之间交换的二进制值。 json程序包json实现RFC 4627中定义的JSON编码和解码。
有人可以向我解释一个人是否比另一个人更有效率,并且通常比较何时选择什么吗?另外,如果我需要与非Go应用程序接口,我猜json将是首选?
在Go程序之间进行通信时,Gob更可取。然而,gob当前仅在Go以及C语言中受支持,因此只有在确定没有任何其他编程语言编写的程序会尝试对值进行解码的情况下,才使用它。
在性能方面,至少在我的机器上,Gob远胜过JSON。测试文件(将其单独放入GOPATH下的文件夹中)
$ go test -bench=. testing: warning: no tests to run BenchmarkGobEncoding-4 1000000 1172 ns/op BenchmarkJSONEncoding-4 500000 2322 ns/op BenchmarkGobDecoding-4 5000000 486 ns/op BenchmarkJSONDecoding-4 500000 3228 ns/op PASS ok testencoding 6.814s