珠海易注册网站,双流县规划建设局网站,三折页设计那个网站做的好,包装设计网站排行榜JSON: 1、JSON是纯文本。 2、JSON具有良好的自我描述性#xff0c;便于阅读。
优点
1 简单易用开发成本低 2 跨语言 3 轻量级数据交换 4 非冗长性#xff08;对比xml标签简单括号闭环#xff09;
缺点
1 体积大#xff0c;影响高并发 2 无版本检查#xff0c;自己做…JSON: 1、JSON是纯文本。 2、JSON具有良好的自我描述性便于阅读。
优点
1 简单易用开发成本低 2 跨语言 3 轻量级数据交换 4 非冗长性对比xml标签简单括号闭环
缺点
1 体积大影响高并发 2 无版本检查自己做兼容 3 片段的创建和验证过程比一般的XML复杂 4 缺乏命名空间导致信息混合
总结最简单最通用的应用协议使用广泛开发效率高性能相对较低维护成本较高。
如果对性能要求不高传输数据少优先选择这个现在大部分使用的是这个
protobuf: Protobuf是一种以有效并可扩展的格式编码结构化数据的方式。 语言无关、平台无关。即 ProtoBuf 支持 Java、C、Python 等多种语言支持多个平台 高效。即比 XML 更小3 ~ 10倍、更快20 ~ 100倍、更为简单 扩展性、兼容性好。你可以更新数据结构而不影响和破坏原有的旧程序 比较强大如果是大数据建议使用 protobuf 性比较好并支持数据流
缺点不便于阅读库相对较大移动端可以使用 protobuf-lite; 1 二进制格式可读性差抓包dump后的数据很难看懂 2 对象冗余字段很多生成的类较大占用空间。 3 默认不具备动态特性可以通过动态定义生成消息类型或者动态编译支持
总结简单快速上手高效兼容性强维护成本较高不便于阅读库相对较大移动端可以使用 protobuf-lite;
flatbuf FlatBuffers是Google专门为游戏开发而创建的跨平台序列化库
对序列化数据的访问不需要打包和拆包——它将序列化数据存储在缓存中这些数据既可以存储在文件中又可以通过网络原样传输而没有任何解析开销 内存效率和速度——访问数据时的唯一内存需求就是缓冲区不需要额外的内存分配 扩展性、灵活性——它支持的可选字段意味着不仅能获得很好的前向/后向兼容性对于长生命周期的游戏来说尤其重要因为不需要每个新版本都更新所有数据 最小代码依赖——仅仅需要自动生成的少量代码和一个单一的头文件依赖很容易集成到现有系统中。 强类型设计——尽可能使错误出现在编译期而不是等到运行期才手动检查和修正 使用简单——生成的C代码提供了简单的访问和构造接口而且如果需要通过一个可选功能可以用来在运行时高效解析Schema和类JSON格式的文本 跨平台——支持C11、Java而不需要任何依赖库在最新的gcc、clang、vs2010等编译器上工作良好。 编码性能对比 (S)
Person个数 Protobuf JSON FlatBuffers 10 6.000 8.952 12.464 50 26.847 45.782 56.752 100 50.602 73.688 108.426 编码性能Protobuf相对于JSON有较大幅度的提高而FlatBuffers则有较大幅度的降低。
解码性能对比 (S)
Person个数 Protobuf JSON FlatBuffers 10 0.255 10.766 0.014 50 0.245 51.134 0.014 100 0.323 101.070 0.006 解码性能方面Protobuf相对于JSON有着惊人的提升。Protobuf的解码时间几乎不随着数据长度的增长而有太大的增长而JSON则随着数据长度的增加解码所需要的时间也越来越长。而FlatBuffers则由于无需解码在性能方面相对于前两者更有着非常大的提升。 移动端可以使用flatbuffers,相对protobuffer 要好一些。
MessagePack Its like JSON.but fast and small.
msgpack不是软件是一个标准可以先把它看成二进制的json“二进制json”容易让人联想到一个更流行一点的标准BSON。如果你不知道bson是啥可以去查一下总之msgpack和bson是同类型的竞争产品但是msgpack无论从速度还是体积上都秒杀bson至少在网络传输上是这样的。
MessagePack 在移动端表现并不是太好可能优势在PC。 protobuf VS flatbuf
从几个角度来讨论
1、接口易用性protobuf的API易用性比flatbuf方便的不是一点点flatbuf的接口比较难用看一下demo就可以大概了解。
2、编码性能flatbuf的编码性能要比protobuf低得多前者的性能大概只有后者的一半。在JSON、protobuf、和flatbuf之中flatbuf的编码性能最差。
3、编码后的数据长度由于通常情况下传输的数据会做压缩因而又分为两种情况编码后未压缩和压缩后的数据长度。flatbuf编码后的数据无论是压缩前还是压缩后都比protobuf的数据长得多前者的大概是后者的两倍。
4、解码性能flatbuf是一种无需解码的二进制格式因而解码性能要高许多大概要快几百倍的样子。
综上protobuf在各个方面的平衡要比flatbuf要好得多但如果使用场景中需要经常解码序列化的数据则有可能从flatbuf的特性获得一定的好处就像Facebook之前的那样。