下面是對在 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+ 的用戶能夠得到更高的執行效率。