发表时间:2015-05-27来源:网络
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 :156serialize :222igbinary_serialize :123json_encode :0.02264404296875json_decode :0.052916049957275serialize :0.031183004379272unserialize :0.029985904693604Igbinary Serialize: 0.024919986724854Igbinary unSerialize: 0.019716024398804
方便对比把之前PHP5.3的测试结果放到下面(之前并未测试igbinary)
json :156serialize :222json_encode :0.1087498664856json_decode :0.12652111053467serialize :0.041656017303467unserialize :0.040987968444824
json :5350serialize :8590igbinary_serialize :2432json_encode :0.92639899253845json_decode :1.8222811222076serialize :1.3030271530151unserialize :1.1492691040039Igbinary Serialize: 0.95630598068237Igbinary unSerialize: 0.82603001594543
下面是之前的结果(之前并未测试igbinary)
json :5350serialize :8590json_encode :0.90479207038879json_decode :1.753741979599serialize :1.3566699028015unserialize :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环境上。
CI框架连接数据库配置操作以及多数据库操作
asp 简单读取数据表并列出来 ASP如何快速从数据库读取大量数据
C语言关键字及其解释介绍 C语言32个关键字详解
C语言中sizeof是什么意思 c语言里sizeof怎样用法详解
PHP中的魔术方法 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep,
PHP中的(++i)前缀自增 和 (i++)后缀自增
将视频设置为Android手机开机动画的教程
最简单的asp登陆界面代码 asp登陆界面源代码详细介绍
常用dos命令及语法
PHP中include和require区别之我见
溧阳论坛触屏版手机版下载v5.4.2.18 安卓版
68.37MB |生活服务
保利悠悦荟最新版app2026下载v3.1.6 安卓版
35.73MB |生活服务
i泰达官方版下载v2.0.10 安卓版
66.01MB |生活服务
与糖医护手机版下载v4.2.0 安卓版
46.54MB |生活服务
智慧宫翻译阿拉伯语手机版下载v1.91.0 安卓版
50.68MB |生活服务
专注清单app下载v15.9 安卓版
42.61MB |生活服务
物性表手机版下载v2.3.0 安卓版
71.12MB |商务办公
hooli留学公寓app下载v5.6.1 安卓官方版
28.64MB |生活服务
2014-09-05
2022-03-20
2022-03-21
2022-03-24
2014-09-05
2014-09-05
2015-07-05
2014-09-05
2022-03-21
2014-09-05