protobuf优势protobuf(Google Protocol Buffers)
Google提供一个具备高效的协议数据交换格式工具库(相似Json)。
但相比于Json,Protobuf有更高的转化效率,时间效率和空间效率都是JSON的3-5倍。java
时间开销: XML格式化(序列化)的开销还好;可是XML解析(反序列化)的开销就不敢恭维了。 可是protobuf在这个方面就进行了优化。可使序列化和反序列化的时间开销都减短。c++
空间开销:也减小了不少编程
好比你你写个一下相似结构体的内容json
message testA { required int32 m_testA = 1; }
像写一个这样的结构,protobuf能够自动生成它的.h 文件和点.cpp文件。
protobuf将对结构体testA的操做封装成一个类。服务器
当客户端和服务器同事使用一块协议的时候, 当客户端在协议中增长一个字节,并不会影响客户端的使用编程语言
在Google官方发布的源代码中包含了c++、java、Python三种语言ide
protobuf缺点为了提升性能,protobuf采用了二进制格式进行编码。这直接致使了可读性差。这个直接影响开发测试时候的效率。固然,通常状况下,protobuf很是可靠,并不会出现太大的问题。工具
通常来讲,XML是自描述的,而protobuf格式则不是。 给你一段二进制格式的协议内容,不配合你写的结构体是看不出来什么做用的。性能
protobuf虽然支持了大量语言的序列化和反序列化,但仍然并非一个跨平台和语言的传输标准。在多平台消息传递中,对其余项目的兼容性并非很好,须要作相应的适配改造工做。相比json 和 XML,通用性仍是没那么好。测试