我接觸json是在07年的時候,這些年隨着rest等概念的流行,json越發的紅火起來,眼瞅着有一統天下的架勢了。
這些年對json的使用,我越發疑惑一個事情:當server之間異步交互時,有必要用json嗎?
正好手里有個項目要用ActiveMQ,做了下測試。
為了體現差距,專門做了個很大的class,使用json轉換后大概35MB左右
使用json傳輸的情況,單位均為ms:
總時間:17366
傳輸時間:220
發送者把object轉為json的時間:6271
發送總共時間:10000
接收者把message轉換為textMessage時間:0
接收者把json轉換為object時間:7146。
****************************************
使用ObjectMessage進行傳輸的情況:
總時間:6742
傳輸時間:173
發送總時間:4836
接收者把message轉換為ObjectMessage時間:1733
******************************************
結論
雖然沒做壓力測試,雖然只測了一次,雖然測試環境僅僅是我的筆記本,但我想我已經可以做出結論了。
在server之間的異步通信時,object優於json。
優勢主要集中於java序列化和對象之間轉換的效率遠高於json盒對象轉換的效率,另外序列化后對象的大小比json的小也是有利傳輸的原因。
對了,json轉換用的是jsonlib,很久沒關心json的性能了,不知有沒有更高效的轉換工具。