下面是对在 .NET Framework 3.5 中对 PHP、Binary、SOAP、XML、JSON、Hessian 和 Burlap 序列化/反序列化的效率对比,其中 PHP 序列化来自最新版本的 PHPRPC 3.0.1 for .NET,Hessian 和 Burlap 序列化来自Hessian C# 的最新版 1.3.3,其它的序列化都是采用 .NET Framework 3.5 中内置的功能。
测试程序可从此处下载:test.zip
下面是测试程序的运行结果图:
从上面的运行结果来看 PHP 序列化和反序列化:
对于基本类型的效率跟 Hessian 不相上下,远远超过其它序列化方式,甚至比 .NET 的 Binary 序列化和反序列化都要快好几倍。但是 Burlap 不支持浮点数的无穷大表示。
对于字节数组来说,速度是 Binary 序列化的 2 倍,是 Hessian 的 10 倍,是 Burlap 的 25 倍,是 SOAP 的 36 倍,是 JSON 的 1000 多倍!
对于数组来说,具有相同元素的数组,比 Binary 序列化要差一些,但是远远超过 SOAP、XML、JSON、Hessian 和 Burlap。具有不同元素的数组,跟 Binary、Hessian 序列化效率接近,比 XML、JSON、Burlap 稍快,远远超过 SOAP。
对于 Hashtable 来说,效率也是超过 .NET Binary、Hessian 和 Burlap 序列化。比 SOAP 快近 10 倍,比 JSON 快了近 100 倍!而 XML 不支持。
对于 ArrayList 和自定义类型来说,效率不如 .NET Binary 序列化,但是仍然远远超过 SOAP、Hessian 和 Burlap,而 XML 和 JSON 则根本不支持。
而在空间占用上,其效率也超过了 Binary、SOAP、XML、Burlap,在基本类型上与 JSON、Hessian 不相上下,对于数组、Hashtable 则远远超过 JSON。
所以,从上面的对比来看,PHPRPC 中所使用的 PHP 序列化是一种非常高效的数据表示方式,远远超过 SOAP、XML、JSON、Burlap 等序列化方式。其效率跟 .NET Binary、Hessian 序列化的效率可以算是不相上下,在综合水平上甚至超越了 .NET Binary、Hessian 序列化。另外在跨语言跨平台方面,PHPRPC 所使用的 PHP 序列化方式则比 .NET Binary 序列化要好的多,而 PHPRPC 本身又在稳定性、易用性、安全性、功能性和脚本语言的支持上又比 Hessian 好很多,通过这些数据我想更加可以说明 PHPRPC 的优秀了。