protobuf 的优缺点

什么是protobuf

protobuf(Google Protocol Buffers)
Google提供一个具备高效的协议数据交换格式工具库(相似Json)。
但相比于Json,Protobuf有更高的转化效率,时间效率和空间效率都是JSON的3-5倍。java

protobuf优势

一、性能好/效率高

时间开销: 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,通用性仍是没那么好。测试

相关文章
相关标签/搜索