現(xiàn)在我們要來看看性能了戚篙,測試硬件配置:Intel Core i5 laptop with 2.50GHz 單通道DDR3 RAM 4G泪蔫,軟件配置:Windows 7 Ultimate 64-bit SP1
基準(zhǔn)測試運(yùn)行一樣的虛擬機(jī)(JVM)券犁,在測試之前捆交,每一個類庫都有一個熱身茧妒,去限制內(nèi)存使用的造成的影響姿骏,用一個顯式調(diào)用垃圾收集器身笤。下面的圖表代表的是序列化和反序列化JSON數(shù)據(jù)以毫秒級使用50次迭代和10次熱身(warm-up)迭代的平均的時間豹悬。
(譯者注:紅色為序列化(Java對象轉(zhuǎn)JSON),藍(lán)色為反序列化(JSON轉(zhuǎn)Java對象))
上面的圖表顯示液荸,F(xiàn)lexjson序列化小數(shù)據(jù)時是最快的瞻佛,而JSON-lib是最慢的。反序列化的時候娇钱,Gson最快伤柄,JSON-lib還是最慢的。
下面的圖表代表的是我們的數(shù)據(jù)在287kb時文搂,序列化和反序列化所花費(fèi)的平均時間适刀。
這張圖顯示,我們對少量的數(shù)據(jù)操作時煤蹭,最快的是Gson?,之后的是?Genson和Flexjson笔喉。
當(dāng)變成大數(shù)據(jù)時取视,結(jié)果變得很不一樣。在下面的圖表中常挚,使用的是108Mb的數(shù)據(jù)作谭,在序列化的時候,Jackson變成了最快的奄毡,F(xiàn)lexjson變成第二快折欠。在反序列化的時候,JSON-lib變成了最快的吼过,之前在處理小數(shù)據(jù)時锐秦,它是最慢的,第二快的是Jackson盗忱。
下面的圖表农猬,顯示的是處理更大一點(diǎn)的數(shù)據(jù)時,我們應(yīng)該使用Jackson和JSON-lib售淡。
另外一個重要的測試是關(guān)于.jar包的大小斤葱。這對于移動端的開發(fā)很重要,我們從下圖中看到揖闸,json-io最小揍堕,之后依次是Flexjson和JSONiJ:
(三)結(jié)論
在這篇文章中,我們知道了七種方式來實(shí)現(xiàn)Java對象和JSON之間的互相轉(zhuǎn)換汤纸。以及哪一個類庫更快衩茸,哪一個更慢,在什么情況下使用等贮泞。作為結(jié)論楞慈,如果你在你的應(yīng)用中是想使用小一點(diǎn)的數(shù)據(jù)量,你應(yīng)該使用Flexjson或者Gson啃擦,如果你需要大的數(shù)據(jù)量你應(yīng)該考慮Jackson?和JSON-lib囊蓝。
文章來源:http://www.open-open.com/lib/view/open1397870197828.html