编码/gob 和编码/json 之间的区别

2024-03-20

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

gob 包 gob 管理 gob 流 - 交换二进制值 编码器(发送器)和解码器(接收器)之间。
json 包 json 实现了 JSON 的编码和解码,定义如下 RFC 4627。

有人可以向我解释一个是否比另一个更有效率,并且一般比较何时选择什么?另外,如果我需要与非 Go 应用程序交互,我想 json 会是首选?


在 Go 程序之间进行通信时,Gob 更受欢迎。然而,目前仅 Go 支持 gob,而且,C https://code.google.com/archive/p/libgob/,因此只有当您确定用任何其他编程语言编写的程序都不会尝试解码这些值时才使用它。

就性能而言,至少在我的机器上,Gob 远远优于 JSON。测试文件 https://gist.github.com/thehowl/85057ad21697160e81ac42bf358a322a(在您的 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编码/gob 和编码/json 之间的区别 的相关文章

随机推荐