Redkale 技术详解 03 -- Convert高性能序列化
2019獨角獸企業(yè)重金招聘Python工程師標準>>>
? ? ? ?Convert是個重復造輪子的組件,卻是個飛速的輪子。Redkale之所以重復造輪子主要追求性能和需要與網(wǎng)絡數(shù)據(jù)的序列化很好的結合(Convert與ByteBuffer的結合)。 Convert在API設計思路上也與其他同類型的框架不一樣,配置與序列化方法是分開的,大部分場景下配置項是固定的,因此不同的配置會動態(tài)生成對應的處理類以保證性能。
????????從包結構可以看出,Convert分三層:序列化與反序列化的抽象基礎包;JSON包、BSON包。即使boolean、int、String這種基礎數(shù)據(jù)類型都不是包含在Convert基礎包中。以下是詳細的結構圖:
????????從上圖可以看出,JSON與BSON是Convert基礎包的實現(xiàn),主要是實現(xiàn)Reader與Writer類。若需要實現(xiàn)XML格式的序列化,可以以JSON為參考自己編寫。對于不是內置(ext子包下的數(shù)據(jù)類型)的且沒有自定義處理(Encoder、Decoder)的數(shù)據(jù)類型, Convert會動態(tài)生成ObjectEncoder、ObjectDecoder對象。
Convert 的性能
????????一切不談性能的框架都是在耍流氓!下面以JSON為例,與其他主流的JSON框架做個簡單的性能比較(測試環(huán)境: DELL的普通筆記本),fastjson一直號稱是Java性能最好的JSON解析框架,其使用Benchmark是?https://github.com/eishay/jvm-serializers/wiki,Redkale根據(jù)該數(shù)據(jù)編寫了MediaContent類。實例由MediaContent.createDefault()方法所得。
????????由上圖第一份報告看出,以MediaContent對象進行比較,fastjson的反序列化性能是最好的,gson性能最差。redkale、fastjson、jackson在序列化方面差距不大。第二份報告的測試對象是將第一份的MediaContent對象中所有的數(shù)值改成負數(shù)進行測試的,可以看出fastjson對于負數(shù)的處理性能很差,只是比gson稍強。第三份報告的測試對象是ConvertRecord對象,該對象的特點是包含int[]、long[]、List、Map數(shù)據(jù)。從結果可以看出fastjson的反序列化性能最差。redkale與jackson一直保持高性能。
????????綜合起來看,Redkale的Convert性能是最好的。數(shù)據(jù)相差50毫秒以下的差距基本可以忽略,因為每次測試的結果會上下波動幾十毫秒。
????????轉載請注明出處:http://redkale.org/article_convert.html
轉載于:https://my.oschina.net/redkale/blog/628555
總結
以上是生活随笔為你收集整理的Redkale 技术详解 03 -- Convert高性能序列化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: libc++abi.dylib: ter
- 下一篇: ie设置ActiveX控件不提示