我接触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的性能了,不知有没有更高效的转换工具。