下面是一些网上的对比图片,以及两年前有人做过的代码测试结果。
网上有个人,做了详细的测试。 因为proto更擅长于整数的编码和处理,所以结论如下: 如果你的生产环境中的JSON没有那么多的double字段,都是字符串占大头,那么基本上来说替换成 Protobuf 也就是仅仅比 Jsoniter 提高一点点,肯定在2倍之内。如果不幸的话,没准 Protobuf 还要更慢一点。
由于:
Protocol Buffer
自身的框架代码 和 编译器 共同完成
所以Protocol Buffer
的序列化速度非常快。parseFrom(input)
解析从输入流读入的二进制字节数据流从上面可知,Protocol Buffer解析过程只需要通过简单的解码方式即可完成,无需复杂的词法语法分析,因此 解析速度非常快。
由于:
所以Protocol Buffer的反序列化速度非常快。
XML的反序列化过程如下:
上述过程非常复杂,其中,将 XML 文件转换为文档对象结构模型的过程通常需要完成词法文法分析等大量消耗 CPU 的复杂计算。 因为序列化 & 反序列化过程简单,所以序列化 & 反序列化过程速度非常快,这也是 Protocol Buffer效率高的原因。
Protocol Buffer的性能好,主要体现在 序列化后的数据体积小 & 序列化速度快,最终使得传输效率高,其原因如下:
序列化速度快的原因:
缺点: