MessagePack为什么比Json更小更快

MessgePack和Json都是常见的数据交换格式。Json更常见一些,MessagePack与之类似,但是更小更快。

MessagePack为什么比Json更小更快_第1张图片

参见官方解释图:
上面是原始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,本质上都是一种二进制的数据交换方式。

你可能感兴趣的:(java)