protobuf和thrift对比

转载 2011年11月07日 09:52:11

本文转自:http://liuchangit.com/development/346.html


数据类型

protobuf thrift protobuf thrift protobuf thrift protobuf thrift
double double float     byte   i16
int32 i32 int64 i64 uint32   uint64  
sint32   sint64   fixed32   fixed64  
sfixed32   sfixed64   bool bool string string
bytes binary message struct enum enum service service

综合对比

  protobuf thrift
功能特性 主要是一种序列化机制 提供了全套RPC解决方案,包括序列化机制、传输层、并发处理框架等
支持语言 C++/Java/Python C++, Java, Python, Ruby, Perl, PHP, C#, Erlang, Haskell
易用性 语法类似,使用方式等类似
生成代码的质量 可读性都还过得去,执行效率另测
升级时版本兼容性 均支持向后兼容和向前兼容
学习成本 功能单一,容易学习 功能丰富、学习成本高
文档&社区 官方文档较为丰富,google搜索protocol buffer有2000W+结果,google group被墙不能访问 官方文档较少,没有API文档,google搜索apache thrift仅40W结果,邮件列表不怎么活跃

性能对比
由于thrift功能较protobuf丰富,因此单从序列化机制上进行性能比较,按照序列化后字节数、序列化时间、反序列化时间三个指标进行,对thrift的二进制、压缩、protobuf三种格式进行对比。

测试方法:取了15000+条样本数据,分别写了三个指标的测试程序,在我自己的电脑上执行,其中时间测试循环1000次,总的序列化/反序列化次数1500W+。

平均字节数

thrift二进制 535
thrift压缩 473
protobuf 477

序列化(1500W次)时间(ms)

thrift二进制 306034
thrift压缩 304256
protobuf 177652

反序列化(1500W次)时间(ms)

thrift二进制 287972
thrift压缩 315991
protobuf 157192

thrift的时间测试可能不是很准,由于thrift产生代码的复杂性,编写的测试代码为了适应其接口,在调用堆栈上可能有一些额外开销。


比较跨语言通讯框架:thrift和Protobuf

前两天想在微博上发表一个观点:在现在的技术体系中,能用于描述通讯协议的方式很多,xml,json,protobuf,thrift,如果在有如此众多选择的基础上,在设计系统时,还自造协议,自己设计协议类...
  • z69183787
  • z69183787
  • 2016年09月21日 11:01
  • 6393

protobuf和thrift对比

数据类型 protobuf thrift protobuf thrift protobuf thrift protobuf thrift ...
  • educast
  • educast
  • 2014年07月11日 11:10
  • 3582

比较跨语言通讯框架:thrift和Protobuf

前两天想在微博上发表一个观点:在现在的技术体系中,能用于描述通讯协议的方式很多,xml,json,protobuf,thrift,如果在有如此众多选择的基础上,在设计系统时,还自造协议,自己设计协议类...
  • zmx729618
  • zmx729618
  • 2016年11月03日 16:18
  • 1289

C++ thrift详细教程 及和Protobuf对比

最近同时用了thrift和protobuf,进行通信传输。之前已写过关于protobuf的一篇博文,具体请点击:http://blog.csdn.net/zsk4232000/article/deta...
  • zsk4232000
  • zsk4232000
  • 2015年12月18日 18:58
  • 2730

无责任比较thrift vs protocol buffers

源自: http://blog.scaner.i.thu.cn/index.php/2008/07/10/thrift-vs-protobuf/ 最近工作需要保存一些结构化的数据。常规的思路,自然是选...
  • wdwbw
  • wdwbw
  • 2010年03月01日 20:25
  • 7795

服务化框架技术选型与京东JSF解密

原文:https://mp.weixin.qq.com/s/hureIGrLVKO7FLDOWdNjWA 作者:章耿,原京东资深架构师,曾负责京东服务框架,配置中心等基础平台。近十年工作经验,专...
  • huakai_sun
  • huakai_sun
  • 2018年01月17日 17:24
  • 78

protobuf,thrift,avro之序列化性能测试

简要记述一下protobuf, thrift, avro序列化性能结果。 测试fang
  • dyw
  • dyw
  • 2014年11月13日 11:32
  • 5737

FlatBuffers与protobuf性能比较

FlatBuffers发布时,顺便也公布了它的性能数据,具体数据请见Benchmark。     它的测试用例由以下数据构成"a set of about 10 objects containing...
  • menggucaoyuan
  • menggucaoyuan
  • 2014年06月25日 08:35
  • 31191

关于thrift的一些探索——thrift序列化技术

thrift的IDL,相当于一个钥匙。而thrift传输过程,相当于从两个房间之间的传输数据。   图-1 (因为Thrift采用了C/S模型,不支持双向通信:client只...
  • z69183787
  • z69183787
  • 2016年11月02日 10:56
  • 2839

RPC专题-Thrift与Protobuf比较1

这篇文章将会分为三个部分,第一个部分全面的介绍Thrift
  • inuyasha1027
  • inuyasha1027
  • 2014年06月23日 01:17
  • 1052
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:protobuf和thrift对比
举报原因:
原因补充:

(最多只允许输入30个字)