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 相关文章推荐
用PHP4访问Oracle815
Oct 09 PHP
php将数据库中所有内容生成静态html文档的代码
Apr 12 PHP
php懒人函数 自动添加数据
Jun 28 PHP
php中时间轴开发(刚刚、5分钟前、昨天10:23等)
Oct 03 PHP
phpphp图片采集后按原路径保存图片示例
Feb 18 PHP
php中session退出登陆问题
Feb 27 PHP
PHP mkdir()无写权限的问题解决方法
Jun 19 PHP
修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)
Aug 01 PHP
thinkphp5实现无限级分类
Feb 18 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
Jun 22 PHP
thinkphp5.1框架容器与依赖注入实例分析
Jul 23 PHP
tp5递归 无限级分类详解
Oct 18 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
如何做到多笔资料的同步
2006/10/09 PHP
php计算到指定日期还有多少天的方法
2015/04/14 PHP
php获取字符串前几位的实例(substr返回字符串的子串用法)
2017/03/08 PHP
JavaScript Event学习第八章 事件的顺序
2010/02/07 Javascript
jquery 中多条件选择器,相对选择器,层次选择器的区别
2012/07/03 Javascript
jquery仿QQ商城带左右按钮控制焦点图片切换滚动效果
2013/06/27 Javascript
jquery mobile changepage的三种传参方法介绍
2013/09/13 Javascript
Javascript实现返回上一页面并刷新的小例子
2013/12/11 Javascript
Javascript基础教程之数据类型 (字符串 String)
2015/01/18 Javascript
AngularJS 表达式详细讲解及实例代码
2016/07/26 Javascript
Javascript 闭包详解及实例代码
2016/11/30 Javascript
微信小程序 动态绑定数据及动态事件处理
2017/03/14 Javascript
用最简单的方法判断JavaScript中this的指向(推荐)
2017/09/04 Javascript
原生JS与jQuery编写简单选项卡
2017/10/30 jQuery
Vue的移动端多图上传插件vue-easy-uploader的示例代码
2017/11/27 Javascript
小程序实现分类页
2019/07/12 Javascript
[01:10:24]DOTA2-DPC中国联赛 正赛 VG vs Aster BO3 第一场 2月28日
2021/03/11 DOTA
python操作mongodb根据_id查询数据的实现方法
2015/05/20 Python
Python守护进程用法实例分析
2015/06/04 Python
在Mac OS系统上安装Python的Pillow库的教程
2015/11/20 Python
CentOS 7下安装Python 3.5并与Python2.7兼容并存详解
2017/07/07 Python
Python 实现数据库(SQL)更新脚本的生成方法
2017/07/09 Python
浅谈使用Python变量时要避免的3个错误
2017/10/30 Python
深入理解Python爬虫代理池服务
2018/02/28 Python
详解如何在cmd命令窗口中搭建简单的python开发环境
2019/08/29 Python
DJango的创建和使用详解(默认数据库sqlite3)
2019/11/18 Python
Python版中国省市经纬度
2020/02/11 Python
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
2020/02/12 Python
Python+redis通过限流保护高并发系统
2020/04/15 Python
在ipython notebook中使用argparse方式
2020/04/20 Python
在Keras中CNN联合LSTM进行分类实例
2020/06/29 Python
COACH德国官方网站:纽约现代奢侈品牌,1941年
2018/06/09 全球购物
王力宏牛津大学演讲稿
2014/05/22 职场文书
群众路线对照检查材料思想汇报怎么写
2014/09/18 职场文书
创新创业项目计划书该怎样写?
2019/08/13 职场文书
HTML静态页面获取url参数和UserAgent的实现
2022/08/05 HTML / CSS