当前位置:   article > 正文

json、xml、protobuf性能对比_protobuf和json区别

protobuf和json区别

1、序列化能⼒对⽐验证

在这⾥让我们分别使⽤PB与JSON的序列化与反序列化能⼒,对值完全相同的⼀份结构化数据进⾏不同次数的性能测试。

测试结果如下:

这里几组测试的序列大小是一个对象序列化后的大小

100[pb序列化]耗时:0.342ms. 序列化后的⼤⼩:278
100[pb反序列化]耗时:0.435ms.
100[json序列化]耗时:1.306ms. 序列化后的⼤⼩:567
100[json反序列化]耗时:0.926ms.

1000[pb序列化]耗时:3.59ms. 序列化后的⼤⼩:278
1000[pb反序列化]耗时:5.069ms.
1000[json序列化]耗时:11.582ms. 序列化后的⼤⼩:567
1000[json反序列化]耗时:9.289ms.

10000[pb序列化]耗时:34.386ms. 序列化后的⼤⼩:278
10000[pb反序列化]耗时:45.96ms.
10000[json序列化]耗时:115.76ms. 序列化后的⼤⼩:567
10000[json反序列化]耗时:91.046ms.

100000[pb序列化]耗时:349.937ms. 序列化后的⼤⼩:278
100000[pb反序列化]耗时:428.366ms.
100000[json序列化]耗时:1150.54ms. 序列化后的⼤⼩:567
100000[json反序列化]耗时:904.58ms.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

由实验结果可得:

  • 编解码性能:ProtoBuf的编码解码性能,⽐JSON⾼出2-4倍。
  • 内存占⽤:ProtoBuf的内存278,⽽JSON到达567,ProtoBuf的内存占⽤只有JSON的1/2。
    注:以上结论的数据只是根据该项实验得出。因为受不同的字段类型、字段个数等影响,测出的数据会有所差异。
    该实验有很多可待优化的地⽅。但其实这种粗略的测试,也能看出来ProtoBuf的优势。

2、总结

序列化协议通⽤性格式可读性 序列化⼤⼩序列化性能 适⽤场景
JSON通⽤(json、xml已成为多种⾏业标准的编写⼯具)⽂本格式轻量(使⽤键值对⽅式,压缩了⼀定的数据空间)web项⽬。因为浏览器对于json数据⽀持⾮常好,有很多内建的函数⽀持.
XML 通⽤⽂本格式 重量(数据冗余,因为需要成对的闭合标签)XML作为⼀种扩展标记语⾔,衍⽣出了HTML、RDF/RDFS,它强调数据结构化的能⼒和可读性。
ProtoBuf独⽴(Protobuf只是Google公司内部的⼯具)⼆进制格式(只能反序列化后得到真正可读的数据)轻量(⽐JSON更轻量,传输起来带宽和速度会有优化) 适合⾼性能,对响应速度有要求的数据传输场景。Protobuf⽐XML、JSON更⼩、更快。

⼩结:

  1. XML、JSON、ProtoBuf都具有数据结构化和数据序列化的能⼒。
  2. XML、JSON更注重数据结构化,关注可读性和语义表达能⼒。ProtoBuf更注重数据序列化,关注
    效率、空间、速度,可读性差,语义表达能⼒不⾜,为保证极致的效率,会舍弃⼀部分元信息。
  3. ProtoBuf的应⽤场景更为明确,XML、JSON的应⽤场景更为丰富。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/272891
推荐阅读