首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

Java、PHPRPC、Hessian、Burlap、AMF3、XML 序列化的效率对照

2012-10-27 
Java、PHPRPC、Hessian、Burlap、AMF3、XML 序列化的效率对比2009-3-1补充:这次就不上图了,测试程序里有测试结

Java、PHPRPC、Hessian、Burlap、AMF3、XML 序列化的效率对比
2009-3-1补充:

这次就不上图了,测试程序里有测试结果,你也可以自己跑结果。这次主要补充了跟 AMF3 的对比,在空间上 AMF3 在几种格式中略显优势,可是在时间上则相差太远,除了 XML 之外,就数它最慢了,而且还不是慢一点点,是几倍好几倍的慢。跟节省的空间来说,不成比例。

又加了 JSON 的。将序列化和反序列化时间分开了。

所以,综合来说,仍然是 PHPRPC 胜出!

新程序下载:PHPRPC___Hessian___AMF3___JSON___XML_Test.zip

--------------------------------------- 以下为旧内容 ---------------------------------------

下面是对在 Java 6 下对 Java(就是 RMI 使用的数据表示方式)、PHPRPC、Hessian(2个协议版本都有)、Burlap 序列化/反序列化的效率对比,其中 PHPRPC 序列化来自最新版本的 PHPRPC 3.0.2 for Java,Hessian 和 Burlap 序列化来自Hessian 的最新版 3.2.1,Java 序列化是采用 JDK 6 中内置的功能。

测试程序可从此处下载:PHPRPC___Hessian_Test.zip

下面是测试程序的运行结果图:

























从上面的结果来看,对于原生类型的序列化和反序列化,PHPRPC 和 Hessian 的效率差不多,对于字节流的序列化,PHPRPC 具有绝对优势,对于容器类型,来说,如果具有重复元素的话,PHPRPC 要远远好于 Hessian,对于没有重复元素的,则效率上不相上下,对于自定义类型来说,PHPRPC 也比 Hessian 效率高不少。而 Java 本身的序列化,效率对比来说波动太大,原生类型要慢好多,而复杂类型和自定义类型稍微好一些。所以总体来说,PHPRPC 在平均效能上算是这几个当中最好的了。

本来还想加入 JSON、SOAP 这些序列化方式的对比,但是找了好久都没有找到能够支持 Java 基本类型和容器类型的 JSON、SOAP 序列化的工具包。不过这两种格式的效率要比现在对比的这几种效率上低很多倍,从 .NET 版本的相关对比上就可以看到出来。

其实这个评测对 PHPRPC 来说,还是不公平的,因为 PHPRPC 现在是按照 Java 1.2 兼容格式编写的,因此要比那些专门为 Java 5+ 编写的代码效率要低。但是在这种情况下,仍然能够胜出,足以说明 PHPRPC 的优秀。

PHPRPC for Java 下一步的计划就是编写专门针对 Java 5+ 的优化版本,让使用 Java 5+ 的用户能够得到更高的执行效率。

补充:

bachmozart 朋友提出要看一下跟最新的 XMLEncoder 和 XMLDecoder 的对比,下面给出加入了 XMLEncoder 和 XMLDecoder 的对比测试结果图,其中标注 XML 的就是,但因为 XMLEncoder/XMLDecoder 不支持自定义类型,所以最后一个测试图上没有它。


























大家不要惊讶,事实就是这样,XML 实在是太慢了,根本就不是一个数量级的东西。这还是最新的 Java SDK 6 update 12 中 XMLEncoder/XMLDecoder。


加入了 XMLEncoder/XMLDecoder 新程序可以从这里下载:PHPRPC___Hessian_Test_new.zip,不过因为跑带 XML 的测试时间太长了,我把那段注释掉了,你如果希望自己跑跑看,把注释符号去掉就好。




忘了说了,虽然源码不做任何修改,我是用hessian-4.0.1测试的。


忘了说了,虽然源码不做任何修改,我是用hessian-4.0.1测试的。


嗯,我在写这篇的时候,hessian-4.0.x 还没出来。hessian 进步很快,值得学习。<p>?</p>
<p>上面是 phprpc 中的 php 序列化,hessian 4.0.1、hprose 1.0(包括属性模式和字段模式两种) 和 java 6.0 序列化的效率比较。</p>
<p><br>从上面结果可以看出,hprose 按属性进行序列化比 hessian 4.0.x 快很多(hessian对对象进行序列化时也是按属性序列化的)。</p>
<p>?</p>
<p>上面的比较程序来自:http://code.google.com/p/thrift-protobuf-compare/</p>

热点排行