【轉載】序列化框架性能對比(kryo、hessian、java、protostuff)

本文轉自: http://blog.csdn.net/jmppok/article/details/44409693 ,作者 jmppok,感謝分享

序列化框架性能對比(kryo、hessian、Java、protostuff)

簡介:

 

優點

缺點

Kryo

速度快,序列化後體積小

跨語言支持較複雜

Hessian

默認支持跨語言

較慢

Protostuff

速度快,基於protobuf

需靜態編譯

Protostuff-Runtime

無需靜態編譯,但序列化前需預先傳入schema

不支持無默認構造函數的類,反序列化時需用戶自己初始化序列化後的對象,其只負責將該對象進行賦值

Java

使用方便,可序列化所有類

速度慢,佔空間

     
     
     

 

測試環境:

硬件信息:

         16 Intel(R) Xeon(R) CPU E5620 @2.40GHz

         Red Hat Enterprise Linux Server release 5.4 (Tikanga)

         java:  "1.6.0_27" Java HotSpot(TM) 64-Bit Server VM (build 20.2-b06, mixed mode)

         JVM options: java -Xmx256m –server

測試數據:(見附件)

         ArrayList.class

         MediaContent.class

         Media.class

         Image.class

測試方法:(參考自https://github.com/eishay/jvm-serializers

<!--[if !supportLists]-->1、  <!--[endif]-->在正式測試之前,將測試用例運行10次對JVM進行預熱。

<!--[if !supportLists]-->2、  <!--[endif]-->對測試用例的每個方法,運行2000次,取平均值。

<!--[if !supportLists]-->3、  <!--[endif]-->每次測試用例運行500次,取最優結果

測試基準:

         ser:           創建一個對象,並將其序列化成byte數組的時間

         deser:       將byte數組反序列化成對象的時間

         total:        創建一個對象,將其序列化成byte數組再反序列化爲對象的總時間

         size:          序列化後的數組大小

         size+dfl:   序列化後用level6級別的zlib進行壓縮後的大小

測試工具:

序列化工具

序列化方式

kryo

使用kryo默認的序列化方式fieldSerializer,

對需要序列化的對象採取默認的操作。開啓reference,關閉register

protostuff

使用靜態編譯生成的Schema進行序列化

protostuff-runtime

使用protostuff-runtime框架生成Schema進行序列化

   

 

 

測試結果:

         時間:


 

         大小:


總結:

         Kryo在類註冊且reference關閉的情況下,序列化速度和大小明顯 優於hessianjava,接近於protostuff。開啓reference後將序列化速度將明顯變慢,但仍舊優於hessian

相關知識:

         類註冊:將需要序列化的類註冊到kryo中,可以提高序列化與反序列化的速度。

         Reference:開啓這個選項後,相同的對象將被序列化爲同一個byte[],默認關閉,如果要支持循環引用,則必須開啓

 

 

穩定性測試:

    測試用例(見附件)

         循環引用:Cyclic.java

序列化方式

無默認構造函數

循環引用

對象爲null

是否需要預先知道對象所屬的類

大對象(4M)

Kryo

支持

需將reference選項打開

支持

不需要,關閉register

支持

Java

支持

支持

支持

不需要

支持

Protostuff

支持

支持

支持

不需要

支持

Protostuff

-runtime

不支持

支持

支持

需要

支持

Hessian

支持

支持

支持

不需要

支持

 

via http://x-rip.iteye.com/blog/1555293


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章