首页 > 资讯列表 > 编程/数据库 >> PHP

PHP5.5三种序列化性能对比

PHP 2014-12-19 00:36:14 转载来源: 网络整理/侵权必删

本文为大家整理提供的是一份PHP5.5三种序列化性能对比结果 ,感兴趣的同学参考下。 运行环境 PHP5.5 内存 16G 8核 2.0GMHz 性能&空间大小列表 采用小数组测试结果 json :156   serialize :222   igbinary_serialize :123   json_encode :0.02264404296875   json_decode :0.052916049957275   serialize :0.031183004379272   unserialize :0.029985904693604   Igbinary Serialize: 0.024919986724854   Igbinary unSerialize: 0.019716024398804  方便对比把之前PHP5.3的测试结果放到下面(之前并未测试igbinary) json :156   s

本文为大家整理提供的是一份PHP5.5三种序列化性能对比结果 ,感兴趣的同学参考下。

运行环境

PHP5.5 内存 16G 8核 2.0GMHz

性能&空间大小列表


采用小数组测试结果

json :156  
serialize :222  
igbinary_serialize :123  
json_encode :0.02264404296875  
json_decode :0.052916049957275  
serialize :0.031183004379272  
unserialize :0.029985904693604  
Igbinary Serialize: 0.024919986724854  
Igbinary unSerialize: 0.019716024398804 

方便对比把之前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  
json_encode :0.92639899253845  
json_decode :1.8222811222076  
serialize :1.3030271530151  
unserialize :1.1492691040039  
Igbinary Serialize: 0.95630598068237  
Igbinary unSerialize: 0.82603001594543 

下面是之前的结果(之前并未测试igbinary)

json :5350  
serialize :8590  
json_encode :0.90479207038879  
json_decode :1.753741979599  
serialize :1.3566699028015  
unserialize :1.3003630638123 

小结:


数据方面:
      1:升级到PHP5.5后,json,serialize,igbinary三种方式序列化后,大小没有变化,说明这三种格式的对象结构没有没有变化,所以可以无缝升级。
      2:占用空间方面,igbinary节省空间明显优势,比如在json一个数组5.4k大小的数据,serialize方式要8.6k,而使用igbinary方式,仅需2.4k,近乎为serialize方式的1/4。
性能方面
      1:在小数据时,json和原生serialize的性能都比PHP5.3版本有所提升,而在处理大数据量时,性能又有所下降。
      2:在序列化方面,json_encode的性能是最好的,其次是igbinary,两者相差无几,最差的为原生serialize,原生serialize性能消耗大概为json和igbinary方式的的1.4倍左右
      3:在反序列方面igbinary的比序列化过程更快,当然也是最快的,但是这种快也是有成本代价的,参见最后的注意事项。
      4:整体性能对比,整体性能是序列化和反序列化之和,简单对比会发现,json是最差的,次之是原生serialize,再好的为ibinary的方式。

综合来说无论从序列化性能还是从占用空间上来说,都是igbinary都是最优选择。但是使用igbinary并非没有代价,在测试中我们发现,调用igbinary_unserialize时,传递非法数据,会导致整个php进程死掉,日志

child 19131 exited on signal 11 (SIGSEGV) after  1.844938 seconds from start 1.844938 seconds from start  

估 计是因为igbinary为了提升性能,在unserialize时,没有做相关格式验证,导致整个进程异常退出。在使用Redis时,我们先期使用 SERIALIZE_PHP方式序列化,为了提升性能,减少对Redis空间的浪费采用igbinary_serialize方式,再切换的时候不小心踩 到这个坑,导致服务器响应出错,直接502,幸亏在daily环境上。


标签: PHP5.5 三种 序列化 性能 对比


声明:本文内容来源自网络,文字、图片等素材版权属于原作者,平台转载素材出于传递更多信息,文章内容仅供参考与学习,切勿作为商业目的使用。如果侵害了您的合法权益,请您及时与我们联系,我们会在第一时间进行处理!我们尊重版权,也致力于保护版权,站搜网感谢您的分享!

站长搜索

http://www.adminso.com

Copyright @ 2007~2024 All Rights Reserved.

Powered By 站长搜索

打开手机扫描上面的二维码打开手机版


使用手机软件扫描微信二维码

关注我们可获取更多热点资讯

站长搜索目录系统技术支持