json_encode,serialize,igbinary,msgpack四种序列化方式,在之前已经有过相关的测试,PHP5.5这方面的测试暂时没有,这次测试基于PHP5.5,并且测试用例,
http://blog.csdn.net/hguisu/article/details/7651730
的测试用例是一样的,只是从这个测试上家里igbinary serialize的测试,作为对比,可以参考
http://www.ooso.net/archives/538
运行环境
性能&空间大小列表
采用小数组测试结果(注意为了数据好看,小数组测试时,循环次数为10000次,大数组为1000次)
- json
:156 - serialize
:222 - igbinary_serialize
:123 - msgpack
:102 - json_encode
:0.22339701652527 - json_decode
:0.53043985366821 - serialize
:0.31040406227112 - unserialize
:0.30859398841858 - Igbinary
Serialize: 0.25647687911987 - Igbinary
unSerialize: 0.19416117668152 - msgpack_pack:
0.14058780670166 - msgpack_unpack:
0.29048585891724
方便对比把之前PHP5.3的测试结果放到下面(之前并未测试igbinary)
- json
:156 - serialize
:222 - json_encode
:0.1087498664856 - json_decode
:0.12652111053467 - serialize
:0.041656017303467 - unserialize
:0.040987968444824
采用大数组测试结果
- json
:5350 - serialize
:8590 - igbinary_serialize
:2432 - msgpack
:3929 - json_encode
:0.92437314987183 - json_decode
:1.791629076004 - serialize
:1.3011419773102 - unserialize
:1.1485421657562 - Igbinary
Serialize: 0.90479803085327 - Igbinary
unSerialize: 0.69125699996948 - msgpack_pack:
0.52022004127502 - msgpack_unpack:
1.0104610919952
下面是之前的结果(之前并未测试igbinary)
- json
:5350 - serialize
:8590 - json_encode
:0.90479207038879 - json_decode
:1.753741979599 - serialize
:1.3566699028015 - unserialize
:1.3003630638123
小结:
数据方面:
性能方面:
使用igbinary并非没有代价,在测试中我们发现,调用igbinary_unserialize时,传递非法数据,会导致整个php进程死掉,日志
- child
19131 exited on signal 11 (SIGSEGV) after 1.844938 seconds from start 1.844938 seconds from start