MessagePack爲什麼比Json更小更快

MessgePack和Json都是常見的數據交換格式。Json更常見一些,MessagePack與之類似,但是更小更快。

在這裏插入圖片描述

參見官方解釋圖:
上面是原始json,27個字節。
下面是用MessagePack打包過的信息,主要思想就是將json中一些重複出現的符號(如括號、冒號、逗號等)用更精簡的方式來表示。具體在這個例子中,用82表示有兩個map,A7表示一個7字節的字段,C3表示true,00表示整數0。經過打包,大小由27字節縮減爲18字節。

MessgePacker和Json在使用中的另一點不同是,MessagePacker對class的一致性要求更高。例如,打包和解包用到的class所有字段必須完全一致,如果發生字段的增刪,則解包一定失敗;而Json則不會,反序列化時只要保證json和class中存在同名字段,即可自動填充。

在實際的遊戲開發過程中,使用MessagePack可以減小數據的傳輸量,因此較多用在前後端通信,或者服務器與服務器之間的RPC通信中。常用的還有protobuf,本質上都是一種二進制的數據交換方式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章