几种序列化协议(protobuf,xstream,jackjson,jdk,hessian)相关数据对比?protobufjacksonxstreamSerializabl
几种序列化协议(protobuf,xstream,jackjson,jdk,hessian)相关数据对比
?protobufjacksonxstreamSerializablehessian2hessian2压缩hessian1序列化(单位ns)11545421?92406?101892679410076629027反序列化(单位ns)13348743?117329?640273787118843237596bytes97311?664?824374283495
?
- protobuf 不管是处理时间上,还是空间占用上都优于现有的其他序列化方式。内存暂用是java 序列化的1/9,时间也是差了一个数量级,一次操作在1us左右。缺点:就是对象结构体有限制,只适合于内部系统使用。json格式在空间占用还是有一些优势,是java序列化的1/2.6。序列化和反序列化处理时间上差不多,也就在5us。当然这次使用的jackson,如果使用普通的jsonlib可能没有这样好的性能,jsonlib估计跟java序列化差不多。xml相比于java序列化来说,空间占用上有点优势,但不明显。处理时间上比java序列化多了一个数量级,在100us左右。以前一种的java序列化,表现得有些失望hessian测试有点意外,具体序列化数据上还步入json。性能上也不如jackjson,输得比较彻底。hessian使用压缩,虽然在字节上有20%以上的空间提升,但性能上差了4,5倍,典型的以时间换空间。总的来说还是google protobuf比较给力
?
总结以后在内部系统,数据cache存储上可以考虑使用protobuf。跟外部系统交互上可以考虑使用json。
?
有兴趣的同学,可以研究一下google protobuf的marshall的方式:http://code.google.com/intl/zh/apis/protocolbuffers/docs/encoding.html
