PHP5.5三种序列化性能对比_PHP教程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP5.5三种序列化性能对比_PHP教程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2948字,纯文字阅读大概需要5分钟。
内容图文
![PHP5.5三种序列化性能对比_PHP教程](/upload/InfoBanner/zyjiaocheng/186/b6222b58baf94144b6e422f705dfd0f9.jpg)
PHP5.5三种序列化性能对比
json_encode,serialize,igbinary三种序列化方式,在之前已经有过相关的测试,PHP5.5这方面的测试暂时没有,这次测试基于PHP5.5,并且测试用例,
http://blog.csdn.net/hguisu/article/details/7651730
的测试用例是一样的,只是从这个测试上家里igbinary serialize的测试,作为对比,可以参考
http://www.ooso.net/archives/538
运行环境
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环境上。
http://www.bkjia.com/PHPjc/931650.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/931650.htmlTechArticlePHP5.5三种序列化性能对比 json_encode,serialize,igbinary三种序列化方式,在之前已经有过相关的测试,PHP5.5这方面的测试暂时没有,这次测试...
内容总结
以上是互联网集市为您收集整理的PHP5.5三种序列化性能对比_PHP教程全部内容,希望文章能够帮你解决PHP5.5三种序列化性能对比_PHP教程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。