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 相关文章推荐
PHP 和 MySQL 开发的 8 个技巧
Oct 09 PHP
java EJB 加密与解密原理的一个例子
Jan 11 PHP
php中XMLHttpRequest(Ajax)不能设置自定义的Referer的解决方法
Nov 26 PHP
PHP中返回引用类型的方法
Apr 03 PHP
PHP在线书签系统分享
Jan 04 PHP
PHP共享内存用法实例分析
Feb 12 PHP
PHP中子类重载父类的方法【parent::方法名】
May 06 PHP
php实现购物车产品删除功能(2)
Jul 23 PHP
visual studio code 调试php方法(图文详解)
Sep 15 PHP
php基于 swoole 实现的异步处理任务功能示例
Aug 13 PHP
PHP 枚举类型的管理与设计知识点总结
Feb 13 PHP
PHP实现rar解压读取扩展包小结
Jun 03 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实现把数字ID转字母ID
2013/08/12 PHP
php使用curl发送json格式数据实例
2013/12/17 PHP
PHP中使用memcache存储session的三种配置方法
2014/04/05 PHP
JS提交并解析后台返回的XML的代码
2008/11/03 Javascript
jquery jqPlot API 中文使用教程(非常强大的图表工具)
2011/08/15 Javascript
JS中引用百度地图并将百度地图的logo和信息去掉
2013/09/29 Javascript
JS实现动态给图片添加边框的方法
2015/04/01 Javascript
javascript中返回顶部按钮的实现
2015/05/05 Javascript
JS+CSS实现仿支付宝菜单选中效果代码
2015/09/25 Javascript
JavaScript_object基础入门(必看篇)
2016/06/13 Javascript
JS使用正则表达式验证身份证号码
2017/06/23 Javascript
react native 文字轮播的实现示例
2018/07/27 Javascript
python 七种邮件内容发送方法实例
2014/04/22 Python
Python列表(list)、字典(dict)、字符串(string)基本操作小结
2014/11/28 Python
深入理解python中的atexit模块
2017/03/07 Python
python+matplotlib演示电偶极子实例代码
2018/01/12 Python
在Python中给Nan值更改为0的方法
2018/10/30 Python
pip install python 快速安装模块的教程图解
2019/10/08 Python
Python join()函数原理及使用方法
2020/11/14 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
2020/11/24 Python
python3爬虫GIL修改多线程实例讲解
2020/11/24 Python
Pytorch模型迁移和迁移学习,导入部分模型参数的操作
2021/03/03 Python
Html5 Geolocation获取地理位置信息实例
2016/12/09 HTML / CSS
Juicy Couture Beauty官方网站:香水和化妆品
2019/03/12 全球购物
Linux内核产生并发的原因
2012/07/13 面试题
护士在校生自荐信
2014/02/01 职场文书
总账会计岗位职责
2014/03/13 职场文书
岗位廉洁从业承诺书
2014/03/28 职场文书
2014年秋季开学演讲稿
2014/05/24 职场文书
平安工地汇报材料
2014/08/19 职场文书
有限公司股东合作协议书
2014/10/29 职场文书
行政处罚告知书
2015/07/01 职场文书
2019年工作总结范文
2019/05/21 职场文书
世界上超棒的8种逻辑思维
2019/08/06 职场文书
Hive导入csv文件示例
2022/06/25 数据库
Nginx安装配置详解
2022/06/25 Servers