PHP序列化方案效率比较

发布于 — 2011 年 04 月 17 日
#PHP #编程

同时对以下几种PHP的序列化方案进行了测试:

  • serialize() and unserialize()
  • json_encode() and json_decode()
  • msgpack_serialize() and msgpack_unserialize()
  • igbinary_serialize() and igbinary_unserialize()

测试环境:

  • OS: Archlinux 32-bit
  • CPU: CORE 2 DUO T9400, 2.53GHz
  • Mem: DDR3, 3G
  • Server: nginx v1.0.0
  • PHP: php v5.3.6 + php-fpm
  • Profiler: xhprof v0.9.2

测试代码块:

```php value = str_repeat('a', 1000); } } function produce($num) { $arr = array(); for ($i = 0; $i < $num; $i++) { $arr[] = new Test(); } $data = serialize($arr); $arr = unserialize($data); $data = json_encode($arr); $arr = json_decode($data); $data = msgpack_serialize($arr); $arr = msgpack_unserialize($data); $data = igbinary_serialize($arr); $arr = igbinary_unserialize($data); } produce(10000); ?> ```

测试结果:

  • 序列化性能:serialize() 24.611ms > msgpack_serialize() 32.687ms > igbinary_serialize() 36.012ms > json_encode() 132.142ms
  • 反序列化性能:igbinary_unserialize() 12.141ms > msgpack_unserialize() 17.185ms > unserialize() 28.723ms > json_decode() 183.141ms
  • 综合性能:igbinary 48.153ms > msgpack 49.872ms > serialize 53.334ms > json 315.283ms

测试结果并没有像传说中的那样,官方的序列化和反序列化函数性能与msgpack和igbinary两个第三方的扩展相差不大,而JSON性能非常差。

Posted via UltraBlog.vim.