golang

时间:2016-12-16 07:39:55

标签: json go encoding gob

我正在GO中编写一个应用程序,它使用编码/ gob在节点之间通过UDP发送结构和切片。它工作正常,但我注意到encoding / json也有类似的API。搜索并找到此信息(https://golang.org/pkg/encoding/):

  

gob包gob管理gobs流 - 交换的二进制值   在编码器(发射器)和解码器(接收器)之间   json包json实现了JSON的编码和解码   RFC 4627。

有人可以向我解释一个人是否比另一个人更有效率,一般来说比较何时选择什么?另外,如果我需要与非golang应用程序接口,我猜json会更受欢迎吗?

2 个答案:

答案 0 :(得分:10)

在Go程序之间进行通信时,Gob更受欢迎。但是,gob目前仅在Go中支持,并且C,所以只有当你确定没有用任何其他编程语言编写的程序会尝试解码这些值时,才能使用gob。

说到性能,至少在我的机器上,Gob远远超过了JSON。 Test file(在你的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

答案 1 :(得分:7)

包编码/ gob基本上是Go特定的,并且不能与其他语言一起使用,但它非常有效(快速并生成小数据)并且可以正确地编组和解组更多数据结构。通过JSON,通常可以更轻松地与其他工具连接。