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 相关文章推荐
提取HTML标签
Oct 09 PHP
Session的工作方式
Oct 09 PHP
PHP 5.0对象模型深度探索之属性和方法
Mar 27 PHP
攻克CakePHP系列三 表单数据增删改
Oct 22 PHP
PHP超级全局变量数组小结
Oct 04 PHP
php模板函数 正则实现代码
Oct 15 PHP
PHP面向对象教程之自定义类
Jun 10 PHP
thinkphp循环结构用法实例
Nov 24 PHP
php简单smarty入门程序实例
Jun 11 PHP
PHP中常用的数组操作方法笔记整理
May 16 PHP
PHP超低内存遍历目录文件和读取超大文件的方法
May 01 PHP
eval(cmd)与eval($cmd)的区别与联系
Jul 07 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输出echo、print、print_r、printf、sprintf、var_dump的区别比较
2013/06/21 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
字符串长度函数strlen和mb_strlen的区别示例介绍
2014/09/09 PHP
PHP反射实际应用示例
2019/04/03 PHP
js function定义函数使用心得
2010/04/15 Javascript
JQuery里选择超链接的实现代码
2011/05/22 Javascript
ASP.NET jQuery 实例9  通过控件hyperlink实现返回顶部效果
2012/02/03 Javascript
jQuery用unbind方法去掉hover事件及其他方法介绍
2013/03/18 Javascript
利用js读取动态网站从服务器端返回的数据
2014/02/10 Javascript
JavaScript操作Cookie详解
2015/02/28 Javascript
使用AngularJS 应用访问 Android 手机的图片库
2015/03/24 Javascript
jQuery实现选项联动轮播效果【附实例】
2016/04/19 Javascript
jQuery实现的自动加载页面功能示例
2016/09/04 Javascript
javascript入门之window对象【新手必看】
2016/11/22 Javascript
jQuery使用ajax方法解析返回的json数据功能示例
2017/01/10 Javascript
使用vux实现上拉刷新功能遇到的坑
2018/02/08 Javascript
webpack里使用jquery.mCustomScrollbar插件的方法
2018/05/30 jQuery
clipboard.js在移动端复制失败的解决方法
2018/06/13 Javascript
Vue Components 数字键盘的实现
2019/09/18 Javascript
浅谈vuex为什么不建议在action中修改state
2020/02/02 Javascript
[51:53]DOTA2-DPC中国联赛 正赛 RNG vs Dragon BO3 第二场 1月24日
2021/03/11 DOTA
王纯业的Python学习笔记 下载
2007/02/10 Python
python常用函数详解
2016/09/13 Python
Python pass详细介绍及实例代码
2016/11/24 Python
Python实现删除文件中含“指定内容”的行示例
2017/06/09 Python
基于Django模板中的数字自增(详解)
2017/09/05 Python
Python爬虫获取整个站点中的所有外部链接代码示例
2017/12/26 Python
Python for循环与range函数的使用详解
2019/03/23 Python
FFT快速傅里叶变换的python实现过程解析
2019/10/21 Python
Python datetime模块的使用示例
2021/02/02 Python
交通事故私了协议书
2014/04/16 职场文书
房地产推广策划方案
2014/05/19 职场文书
公司领导九九重阳节发言稿2014
2014/09/25 职场文书
出生证明范本
2015/06/15 职场文书
python opencv通过按键采集图片源码
2021/05/20 Python
MySQL查看表和清空表的常用命令总结
2021/05/26 MySQL