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 print EOF实现方法
May 21 PHP
PHP遍历数组的几种方法
Mar 22 PHP
关于PHP语言构造器介绍
Jul 08 PHP
destoon实现商铺管理主页设置增加新菜单的方法
Jun 26 PHP
YII Framework框架教程之缓存用法详解
Mar 14 PHP
Zend Framework框架中实现Ajax的方法示例
Jun 27 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
PHP实现字符串的全排列详解
Apr 24 PHP
Laravel 对某一列进行筛选然后求和sum()的例子
Oct 10 PHP
php libevent 功能与使用方法详解
Mar 04 PHP
PHP实现页面静态化深入讲解
Mar 04 PHP
php 解析非标准json、非规范json
Apr 01 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
nginx+php-fpm配置文件的组织结构介绍
2012/11/07 PHP
PHP用FTP类上传文件视频等的简单实现方法
2016/09/23 PHP
详解yii2实现分库分表的方案与思路
2017/02/03 PHP
javascript 面向对象 function类
2010/05/13 Javascript
window.onresize 多次触发的解决方法
2013/11/08 Javascript
js全屏显示显示代码的三种方法
2013/11/11 Javascript
$(&quot;&quot;).click与onclick的区别示例介绍
2014/09/25 Javascript
浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用
2014/11/23 Javascript
JavaScript实现鼠标滑过图片变换效果的方法
2015/04/16 Javascript
jquery实现具有嵌套功能的选项卡
2016/02/12 Javascript
JavaScript数组,JSON对象实现动态添加、修改、删除功能示例
2018/05/26 Javascript
layui lay-verify form表单自定义验证规则详解
2019/09/18 Javascript
有关vue 开发钉钉 H5 微应用 dd.ready() 不执行问题及快速解决方案
2020/05/09 Javascript
JS倒计时两种实现方式代码实例
2020/07/27 Javascript
JavaScript常用工具函数汇总(浏览器环境)
2020/09/17 Javascript
微信小程序实现选项卡滑动切换
2020/10/22 Javascript
使用Python3中的gettext模块翻译Python源码以支持多语言
2015/03/31 Python
Python RuntimeError: thread.__init__() not called解决方法
2015/04/28 Python
python简单判断序列是否为空的方法
2015/06/30 Python
浅析Python数据处理
2018/05/02 Python
Python高级用法总结
2018/05/26 Python
Python3 获取文件属性的方式(时间、大小等)
2020/03/12 Python
Python实现自动打开电脑应用的示例代码
2020/04/17 Python
HTML5 Canvas绘制文本及图片的基础教程
2016/03/14 HTML / CSS
DJI全球:DJI Global
2021/03/15 全球购物
简单叙述一下MYSQL的优化
2016/05/09 面试题
大学生学习生活的自我评价
2013/11/01 职场文书
学生自我鉴定模板
2013/12/30 职场文书
好的演讲稿开场白
2013/12/30 职场文书
社区优秀志愿者材料
2014/02/02 职场文书
《湘夫人》教学反思
2014/02/21 职场文书
美术教学感言
2014/02/22 职场文书
学生旷课检讨书500字
2014/10/28 职场文书
2015年家长学校工作总结
2015/04/22 职场文书
小学毕业感言100字
2015/07/30 职场文书
九年级数学教学反思
2016/02/17 职场文书