.NET 中对 PHP、Binary、SOAP、XML、JSON、Hessian 等序列化的效率对比
下面是对在 .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
下面是测试程序的运行结果图:
http://andot.iteye.com/upload/attachment/63400/9c38f73e-93ab-31c6-94c6-c4b8fb02c826.jpg
http://andot.iteye.com/upload/attachment/63402/bdfb2f8a-a924-39ef-abfc-e934e5a31902.jpg
http://andot.iteye.com/upload/attachment/63404/09a5d03f-c43d-3fa2-a20f-3c0838804e3b.jpg
http://andot.iteye.com/upload/attachment/63406/6be201aa-48df-3369-8645-27a0d62841b1.jpg
http://andot.iteye.com/upload/attachment/63408/c788d08a-c89b-30ec-b7f9-bd4adafa5167.jpg
http://andot.iteye.com/upload/attachment/63410/2fd75f2a-4984-3b9e-841c-d6727d8faccb.jpg
http://andot.iteye.com/upload/attachment/63412/c7953260-d98d-3efe-abea-3587303e17fc.jpg
http://andot.iteye.com/upload/attachment/63414/631c760d-0729-3c6e-ba33-11405e48f2c5.jpg
http://andot.iteye.com/upload/attachment/63416/cf21c9a2-7486-3655-a749-442d1d820225.jpg
http://andot.iteye.com/upload/attachment/63418/364d3063-3f22-365d-8f05-d01306cc1e33.jpg
http://andot.iteye.com/upload/attachment/63420/74e04075-03c5-3220-b3c3-93623d2ecdc9.jpg
http://andot.iteye.com/upload/attachment/63422/3d7a93a1-08d0-3b4c-8fd4-fa662eb72162.jpg
从上面的运行结果来看 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 的优秀了。
页:
[1]