1. 程式人生 > >protobuf和thrift對比

protobuf和thrift對比

資料型別

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產生程式碼的複雜性,編寫的測試程式碼為了適應其介面,在呼叫堆疊上可能有一些額外開銷。


相關推薦

protobufthrift對比

資料型別 protobuf thrift protobuf thrift protobuf thrift protobuf thrift double double float byte i16 int32 i32 int64

protobuf-c 在arm linux 嵌入式平臺的使用 protobufJson對比測試

        關於什麼是protobuf,網上搜搜一大堆,很多人用的都還是json,以為json是多種語言傳輸資料是萬能的,看完了protobuf的實現,就明白了簡單高效才是王道。 1、首先寫一個

三種通用應用層協議protobufthrift、avro對比,完爆xml,json,http

avr bsp 編譯 通用應用 rift python語言 二進制 code 序列   原文: https://www.douban.com/note/523340109/   Google protobuf:  優點    二進制消息,性能好/效率高(空間和時間效率都

jqueryvue對比

操作dom upload ssh component .html div 前言 高效 sets jquery和vue對比 前言:很多人說jquey和vue沒有什麽可比的,應該和Angular,React來比吧,我到覺得他們倒沒有多大的可比性,都是基於mvvm思想設計的框架,

FairyGUINGUI對比

相對 參數 編輯器 溝通 界面 丟失 需要 只需要 可能 一直在做Unity方面的遊戲開發,經同事介紹了解到有這麽一個GUI能提供跨平臺的能力,有獨立UI編輯器,而且功能強大,能夠組合成復雜的UI界面,可以導出到Unity,Flash,Starling等,文檔還說未來將支持

800Li 流媒體傳統http播放MP4FLV對比

流媒體 http html5 mp4 隨著Web 應用發展的普及,在瀏覽器上播放媒體(視頻、音頻)的需求變得越來越普遍;很多的企業在嘗試在網站加入多媒體內容,最常見的倆種方式: 1. 普通的 http 文件點播 ,直接通過網站前臺 file upload 的方

SSHSSM對比總結

模式 csdn jsp 分離 依賴註入 resolve 靈活 sql語句優化 相關 當下流行的兩種企業開發MVC開源框架,是我們Java程序猿必備知識能力。MVC,即模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設計典範,用一種業務邏輯

RedisMemcache對比及選擇(轉載)

rain not 目前 ctu res sim per fast 超過 http://www.cnblogs.com/EE-NovRain/p/3268476.html 我這段時間在用Redis,感覺挺方便的,但比較疑惑在選擇內存數據庫的時候到底什麽時候選擇redis,

MySQL存儲引擎InnodbMyISAM對比總結

級別 索引 日誌 鎖定 lte mysql 恢復 ins 標準 Innodb引擎 InnoDB是一個事務型的存儲引擎,設計目標是處理大數量數據時提供高性能的服務,它在運行時會在內存中建立緩沖池,用於緩沖數據和索引。 Innodb引擎優點 1.支持事務處

RedisMemcache對比及選擇

fas 之前 there 快照 存在 cas struct 服務器 eboot 在選擇內存數據庫的時候到底什麽時候選擇redis,什麽時候選擇memcache,然後就查到下面對應的資料,是來自redis作者的說法(stackoverflow上面)。 You shou

Iterator ListIterator 對比

dex asp pan iter log mov 添加 cnblogs rem Iterator 的方法   //是否還有下一個  boolean hasNext();   //返回下一個 E next();   //移除返回的下一個 void rem

Elasticsearch簡介安裝對比

特殊 字段 tree apache 查看 端口 blog work 分布式搜索 各位小夥伴,又到了本期分享大數據技術的時間,本次給大夥帶來的是Elasticsearch這個技術,閑話不多聊,我們開始進入正題。 一、什麽是elasticsearch Elasticsearc

shellpython對比對目錄下不同文件

技術文檔cat git_tar.py import subprocess,tarfile,osdef finds():tar = tarfile.open("test.tar.gz","w:gz")result=subprocess.call(‘git diff 99g

FineBI學習系列之淺談FineBITableau對比異同(從產品理念功能對比)(圖文詳解)

研究 簡單 nio 比較 管理 post 企業it 獨立 圖片   不多說,直接上 幹貨!   FineBI和Tableau是比較好的自助式商業智能軟件,功能都很強大,是企業數據可視化不可或缺的利器,但兩款產品還是有非常大的區別的

MySQL查詢語句中的IN Exists 對比分析

In exists nested loop sql優化 查詢效率 背景介紹 最近在寫SQL語句時,對選擇IN 還是Exists 猶豫不決,於是把兩種方法的SQL都寫出來對比一下執行效率,發現IN的查詢效率比Exists高了很多,於是想當然的認為IN的效率比Exists好,但本著尋根究底的原

dubborabbitmq對比

inter 80端口 ica 結合 model 建立連接 socket通訊 讓其 業務 隨著項目越來越大,局勢就是項目拆分,大項目拆分成很多項目,各種技術也應允而生。從應用交互層面,按我的理解dubbo和rabbitmq就對比分析進行學習。dubbo和zookeeper結合

RAMOSSSD對比

size 內存條 nvme ssd fuck 優化 玩家 勞斯萊斯 AD 文檔 http://bbs.pcbeta.com/forum.php?mod=redirect&goto=findpost&ptid=1786284&pid=48341400R

redismemcached對比

redis memcache redis memcache區別 nosql redis特點 我總結的: 更加權威的對比 關於這兩種技術選擇的總結: 參考:https://db-engines.com/en/system/Memcached%3BRedishttps://cloud.orac

layuibootstrap 對比

需求 block 版本 查詢 指點 lock layui 後臺 框架 layui和bootstrap 對比 這兩個都屬於UI渲染框架。 layui是國人開發的一套框架,2016年出來的,現在已更新到2.X版本了。比較新,輕量級,樣式簡單好看。 bootstr

SOC中的DFTBIST對比與比較-IC學習筆記(二)

獨立 讀取 c學習 連接 特殊 客戶服務 bsp design 來源 ATE:ATE是Automatic Test Equipment的縮寫,根據客戶的測試要求、圖紙及參考方案,采用MCU、PLC、PC基於VB、VC開發平臺,利用TestStand&LabV