PHP中json_encode、json_decode与serialize、unserialize的性能测试分析


Posted in PHP onJune 09, 2010

于是便联想到PHP中的对象怎么样序列化存储性价比最高呢?接着想到了之前同事推荐的JSON编码和解码函数。
据他所说,json_encode和json_decode比内置的serialize和unserialize函数要高效。
于是我决定动手实验,证实一下同事所说的情况是否属实。
实验分别在PHP 5.2.13和PHP 5.3.2环境下进行。
用同一个变量,分别用以上方式进行编码或解码10000次,并得出每个函数执行10000次所需的时间。
以下是PHP 5.2.13环境其中一次测试结果:

json : 190 
serialize : 257 
json_encode : 0.08364200592041 
json_decode : 0.18004894256592 
serialize : 0.063642024993896 
unserialize : 0.086990833282471 
DONE.

以下是PHP 5.3.2环境其中一次测试结果:
json : 190 
serialize : 257 
json_encode : 0.062805891036987 
json_decode : 0.14239192008972 
serialize : 0.048481941223145 
unserialize : 0.05927300453186 
DONE.

这次实验得到的结论是:
json_encode和json_decode的效率并没有比serialize和unserialize的效率高,在反序列化的时候性能相差两倍左右,PHP 5.3执行效率比PHP 5.2略有提升。
以下是我用来做测试的代码:
<?php 
$target = array ( 
'name' => '全能头盔', 
'quality' => 'Blue', 
'ti_id' => 21302, 
'is_bind' => 1, 
'demand_conditions' => 
array ( 
'HeroLevel' => 1, 
), 
'quality_attr_sign' => 
array ( 
'HeroStrength' => 8, 
'HeroAgility' => 8, 
'HeroIntelligence' => 8, 
), 
); 
$json = json_encode($target); 
$seri = serialize($target); 
echo "json :\t\t" . strlen($json) . "\r\n"; 
echo "serialize :\t" . strlen($seri) . "\r\n\r\n"; 
$stime = microtime(true); 
for ($i = 0; $i < 10000; $i ++) 
{ 
json_encode($target); 
} 
$etime = microtime(true); 
echo "json_encode :\t" . ($etime - $stime) . "\r\n"; 
//---------------------------------- 
$stime = microtime(true); 
for ($i = 0; $i < 10000; $i ++) 
{ 
json_decode($json); 
} 
$etime = microtime(true); 
echo "json_decode :\t" . ($etime - $stime) . "\r\n\r\n"; 
//---------------------------------- 
$stime = microtime(true); 
for ($i = 0; $i < 10000; $i ++) 
{ 
serialize($target); 
} 
$etime = microtime(true); 
echo "serialize :\t" . ($etime - $stime) . "\r\n"; 
//---------------------------------- 
$stime = microtime(true); 
for ($i = 0; $i < 10000; $i ++) 
{ 
unserialize($seri); 
} 
$etime = microtime(true); 
echo "unserialize :\t" . ($etime - $stime) . "\r\n\r\n"; 
echo 'DONE.'; 
?>
PHP 相关文章推荐
dedecms后台验证码总提示错误的解决方法
Mar 21 PHP
海河写的 Discuz论坛帖子调用js的php代码
Aug 23 PHP
鸡肋的PHP单例模式应用详解
Jun 03 PHP
PHP快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)
Apr 10 PHP
PHP中数据库单例模式的实现代码分享
Aug 21 PHP
php生成rss类用法实例
Apr 14 PHP
php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
Dec 07 PHP
yii去掉必填项中星号的方法
Dec 28 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
Feb 15 PHP
PHP使用SOAP扩展实现WebService的方法
Apr 01 PHP
IIS 7.5 asp Session超时时间设置方法
Apr 17 PHP
php实现支持中文的文件下载功能示例
Aug 30 PHP
php网站来路获取代码(针对搜索引擎)
Jun 08 #PHP
php数组对百万数据进行排除重复数据的实现代码
Jun 08 #PHP
腾讯QQ php程序员面试题目整理
Jun 08 #PHP
php 上传文件类型判断函数(避免上传漏洞 )
Jun 08 #PHP
php的字符串用法小结
Jun 08 #PHP
php文章内容分页并生成相应的htm静态页面代码
Jun 07 #PHP
php获取当前网址url并替换参数或网址的方法
Jun 06 #PHP
You might like
php生成局部唯一识别码LUID的代码
2012/10/06 PHP
初识laravel5
2015/03/02 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
2019/09/02 PHP
jquery实现excel导出的方法
2013/04/04 Javascript
探讨javascript是不是面向对象的语言
2013/11/21 Javascript
JQuery的ON()方法支持的所有事件罗列
2015/02/28 Javascript
jquery实现简单的表单验证
2015/11/17 Javascript
JavaScript encodeURI 和encodeURIComponent
2015/12/04 Javascript
基于JavaScript实现动态添加删除表格的行
2016/02/01 Javascript
JavaScript跨域调用基于JSON的RESTful API
2016/07/09 Javascript
Bootstrap 最常用的JS插件系列总结(图片轮播、标签切换等)
2016/07/14 Javascript
详解微信小程序 登录获取unionid
2017/06/27 Javascript
react MPA 多页配置详解
2019/10/18 Javascript
python使用win32com在百度空间插入html元素示例
2014/02/20 Python
使用Python的Scrapy框架十分钟爬取美女图
2016/12/26 Python
Python中元组,列表,字典的区别
2017/05/21 Python
Python中用psycopg2模块操作PostgreSQL方法
2017/11/28 Python
python使用socket创建tcp服务器和客户端
2018/04/12 Python
django 在原有表格添加或删除字段的实例
2018/05/27 Python
python笔记_将循环内容在一行输出的方法
2019/08/08 Python
pygame库实现俄罗斯方块小游戏
2019/10/29 Python
利用pytorch实现对CIFAR-10数据集的分类
2020/01/14 Python
Python json读写方式和字典相互转化
2020/04/18 Python
Selenium+BeautifulSoup+json获取Script标签内的json数据
2020/12/07 Python
css3隔行变换色实现示例
2014/02/19 HTML / CSS
ProBikeKit美国官网:自行车套件,跑步和铁人三项套件
2016/10/13 全球购物
ASOS亚洲:ASOS Asia
2018/03/04 全球购物
远程教育心得体会
2014/01/03 职场文书
闭幕式主持词
2014/04/02 职场文书
调研汇报材料范文
2014/08/17 职场文书
2014年行政部工作总结
2014/11/19 职场文书
2015年毕业生自荐信范文
2015/03/24 职场文书
2016新教师培训心得体会范文
2016/01/08 职场文书
python元组打包和解包过程详解
2021/08/02 Python
光之国的四大叛徒:第一贝利亚导致宇宙毁灭,赛文奥特曼在榜
2022/03/18 日漫
java后台调用接口及处理跨域问题的解决
2022/03/24 Java/Android