日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

java序列化框架(protobuf、thrift、kryo、fst、fastjson、Jackson、gson、hessian)性能对比

發布時間:2023/12/15 综合教程 30 生活家
生活随笔 收集整理的這篇文章主要介紹了 java序列化框架(protobuf、thrift、kryo、fst、fastjson、Jackson、gson、hessian)性能对比 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??

我們為什么要序列化

舉個栗子:下雨天我們要打傘,但是之后我們要把傘折疊起來,方便我們存放。那么運用到我們java中道理是一樣的,我們要將數據分解成字節流,以便存儲在文件中或在網絡上傳輸,這叫序列化。我們要用的時候,就需要將字節流重構成對象,這叫反序列化。不知道我這么說大家能不能理解。

java序列化的缺點

java自己提供序列化而且用起來也非常簡單,但是在遠程服務調用中很少用它,主要存在以下缺點:

1.無法跨語言。這應該是java序列化最致命的問題了。由于java序列化是java內部私有的協議,其他語言不支持,導致別的語言無法反序列化,這嚴重阻礙了它的應用。2.序列后的碼流太大。java序列化的大小是二進制編碼的5倍多!3.序列化性能太低。java序列化的性能只有二進制編碼的6.17倍,可見java序列化性能實在太差了。

總結 我們判斷一個編碼框架的優劣主要從以下幾個方面:

1.是否支持跨語言,支持語種是否豐富
2.編碼后的碼流
3.編解碼的性能
4.類庫是否小巧,API使用是否方便
5.使用者開發的工作量和難度。

幾個流行的編解碼框架

1.google的Protobuf

Protobuf是google開源的項目,全稱 Google Protocol Buffers.特點:

1.結構化數據存儲格式(xml,json等)
2.高性能編解碼技術
3.語言和平臺無關,擴展性好
4.支持java,C++,Python三種語言。

2.faceBook的Thrift

Thrift源于faceBook,2007年facebook將Thrift做為一個開源項目交給了apache基金會。特點:

1.Thrift支持多種語言(C++,C#,Cocoa,Erlag,Haskell,java,Ocami,Perl,PHP,Python,Ruby,和SmallTalk)2.Thrift適用了組建大型數據交換及存儲工具,對于大型系統中的內部數據傳輸,相對于Json和xml在性能上和傳輸大小上都有明顯的優勢。3.Thrift支持三種比較典型的編碼方式。(通用二進制編碼,壓縮二進制編碼,優化的可選字段壓縮編解碼)

3.kryo

官方文檔中文翻譯:http://blog.csdn.net/fanjunjaden/article/details/72823866

1.速度快,序列化后體積小
2.跨語言支持較復雜

4.hessian

1.默認支持跨語言
2.較慢

5.fst

高性能序列化框架FST:http://liuyieyer.iteye.com/blog/2136240

1.fst是完全兼容JDK序列化協議的系列化框架,序列化速度大概是JDK的4-10倍,大小是JDK大小的1/3左右。

6.序列化成json

各個JSON技術的比較詳解:http://developer.51cto.com/art/201506/480273.htm

6.1、開源的Jackson

相比json-lib框架,Jackson所依賴的jar包較少,簡單易用并且性能也要相對高些。而且Jackson社區相對比較活躍,更新速度也比較快。Jackson對于復雜類型的json轉換bean會出現問題,一些集合Map,List的轉換出現問題。Jackson對于復雜類型的bean轉換Json,轉換的json格式不是標準的Json格式

6.2、Google的Gson

Gson是目前功能最全的Json解析神器,Gson當初是為因應Google公司內部需求而由Google自行研發而來,但自從在2008年五月公開發布第一版后已被許多公司或用戶應用。Gson的應用主要為toJson與fromJson兩個轉換函數,無依賴,不需要例外額外的jar,能夠直接跑在JDK上。而在使用這種對象轉換之前需先創建好對象的類型以及其成員才能成功的將JSON字符串成功轉換成相對應的對象。類里面只要有get和set方法,Gson完全可以將復雜類型的json到bean或bean到json的轉換,是JSON解析的神器。Gson在功能上面無可挑剔,但是性能上面比FastJson有所差距。

6.3、阿里巴巴的FastJson

Fastjson是一個Java語言編寫的高性能的JSON處理器,由阿里巴巴公司開發。無依賴,不需要例外額外的jar,能夠直接跑在JDK上。FastJson在復雜類型的Bean轉換Json上會出現一些問題,可能會出現引用的類型,導致Json轉換出錯,需要制定引用。FastJson采用獨創的算法,將parse的速度提升到極致,超過所有json庫。

綜上4種Json技術的比較,在項目選型的時候可以使用Google的Gson和阿里巴巴的FastJson兩種并行使用,
如果只是功能要求,沒有性能要求,可以使用google的Gson,
如果有性能上面的要求可以使用Gson將bean轉換json確保數據的正確,使用FastJson將Json轉換Bean。

以上所有框架性能測試數據結果:http://developer.51cto.com/art/201506/480273.htm

總結

以上是生活随笔為你收集整理的java序列化框架(protobuf、thrift、kryo、fst、fastjson、Jackson、gson、hessian)性能对比的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。