json與protobuf的速度之爭

2021-08-28 11:01:18 字數 743 閱讀 9125

json是這些年慢慢興起的輕量級資料交換格式。比起老大哥xml。因其更快的解析速度和更小的體積,可謂是用過的都說好。一般情況下json足夠滿足你的大多數需求,但是在計算機領域,沒有最快,只有更快。

當你的傳輸資料大到一定程度的時候,json的速度也不能滿足你需求的時候,你就需要更快的protobuf。

因為其使用二進位制儲存,所以會比json更快。但是缺點也是顯而易見,二進位制儲存易讀性很差。

我曾遇到要解析40m json的需求。在pc端,使用litjson需要解析10秒鐘。但是將相同的內容通過protobuf再匯出成bytes。只要17m。縮小了2.5倍左右。但是讀取速度只要0.8秒,還包括了資料解析後的處理。

0.1秒和0.008秒可能給人差別不大,但是10秒和0.8秒的差別真的是天壤地別。

如果需要傳輸的資料量比較大時,protobuf是你的不二選擇。

如何使用呢?

我們在unity中只需要使用 protobuf-net 這個dll就行了,下面是其在github上的鏈結。如何使用他鏈結內已經非常的清楚了,我在這不重複說了。

其中的坑:

1.將類匯出成protobuf或者是從protobuf匯入到類時,基類的屬性是無法匯入的。所以說使用protobuf的模型類最好還是不要相互繼承。這點需要注意。

2.unity在pc端讀取2進製檔案的檔案是沒有要求的。.bat.bin都可以用c# 的io類來讀取。但是在安卓端因為沒法使用io。如果通過resourecs.load來讀取的話,2進製檔案的字尾需要是.bytes。

Protobuf檔案的編寫與使用

字段型別 syntax proto3 import public other.proto package go.micro.hello service greeter message hellorequest message phonenumber repeated phonenumber phon...

Linux下protobuf的編譯與安裝

unzip protobuf 2.5.0.zip根目錄下沒有configure檔案,卻有乙個autogen.sh,原來是因為protobuf的編譯方式做了修改,要執行autogen.sh才會生成configure指令碼。1 check that gtest is present.usually it...

protobuf安裝與生成c 檔案

protobuf原始碼 解壓 tar zvf protobuf tar.gz 進入到protobuf目錄 cd protobuf 指定安裝目錄 configure prefix usr local protobuf 編譯 make。測試 make check。安裝 make install。設定環境...