protobuf和thrift对比
生活随笔
收集整理的這篇文章主要介紹了
protobuf和thrift对比
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
詳見:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt383
數據類型
| 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產生代碼的復雜性,編寫的測試代碼為了適應其接口,在調用堆棧上可能有一些額外開銷。
?
轉載于:https://www.cnblogs.com/grefr/p/6088053.html
總結
以上是生活随笔為你收集整理的protobuf和thrift对比的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新手引导坦克世界
- 下一篇: mysql创建字段非空NOT NULL的