2016-12-16 11 views
4

私はエンコーディング/ゴブを使用してノード間でUDP上で構造とスライスを送信するアプリケーションをGOに書いています。それはうまく動作しますが、私は/ jsonも同様のAPIを持っていることに気付きました。 (https://golang.org/pkg/encoding/)この情報を検索し、見つかった:golangのエンコーディング/ gobとエンコーディング/ jsonの違い

ゴブパッケージゴブが塊の流れを管理する - バイナリ値は、エンコーダ(送信機)およびデコーダ(受信機)との間で を交換しました。
JSONパッケージJSONは RFCで定義されているJSONのエンコードおよびデコードを実装4627.

は、誰かが1のとき、何を選択するために比較するより一般的には他のより効率的であるかどうか私に説明できますか?また、私は非golangアプリケーションとのインタフェースが必要な場合は、jsonが優先されると思いますか?

+0

例とき 'gob'「勝利」json''オーバー:[インターフェースから非整列化するためにどのように{}行くに} {インターフェイスに](HTTP ://stackoverflow.com/a/40823362/1705598)。また、興味深い/関連する質問を参照してください:[エンコーディング/ゴブは決定的ですか?](http://stackoverflow.com/questions/33228700/is-encoding-gob-deterministic/33228913#33228913);と[効率的な構造体のディスクへのシリアル化の効率化](http://stackoverflow.com/questions/37618399/efficient-go-serialization-of-struct-to-disk/37620399#37620399) – icza

答えて

3

Goプログラム間で通信する場合、Gobがより好ましい。しかし、ゴブは現在のところGoでのみサポートされています.は他のプログラミング言語で記述されたプログラムが値をデコードしようとしていないと確信しているときにのみ使用されます。

少なくとも私のマシンでは、パフォーマンスに関しては、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 
4

パッケージのエンコーディング/ゴブは、基本的には他の言語では使用できませんが、非常に効率的(高速で小さなデータを生成)で、より多くのデータ構造を適切に整列化および非整列化できます。他のツールとのインターフェースは、JSONを使用する方が簡単です。

関連する問題