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时间不正确的解决方法
Apr 09 PHP
JoshChen_web格式编码UTF8-无BOM的小细节分析
Aug 16 PHP
PHP调用C#开发的dll类库方法
Jul 28 PHP
PHP防盗链代码实例
Aug 27 PHP
PHP实现批量生成App各种尺寸Logo
Mar 19 PHP
php实现的通用图片处理类
Mar 24 PHP
PHP Smarty模版简单使用方法
Mar 30 PHP
CI框架源码解读之URI.php中_fetch_uri_string()函数用法分析
May 18 PHP
php处理单文件、多文件上传代码分享
Aug 24 PHP
PHP实现无限分类的实现方法
Nov 14 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
Apr 07 PHP
PHP实现打包下载文件的方法示例
Oct 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 zip扩展Linux下安装过程分享
2014/05/05 PHP
curl 出现错误的调试方法(必看)
2017/02/13 PHP
jQuery 学习入门篇附实例代码
2010/03/16 Javascript
fancybox1.3.1 基于Jquery的插件在IE中图片显示问题
2010/10/01 Javascript
关于全局变量和局部变量的那些事
2013/01/11 Javascript
js渐变显示渐变消失示例代码
2013/08/01 Javascript
JavaScript中的类数组对象介绍
2014/12/30 Javascript
JavaScript实现简单的拖动效果
2016/07/02 Javascript
React 组件转 Vue 组件的命令写法
2018/02/28 Javascript
js 图片转base64的方式(两种)
2018/04/24 Javascript
Vue页面跳转动画效果的实现方法
2018/09/23 Javascript
vue3实现v-model原理详解
2019/10/09 Javascript
详解用js代码触发dom事件的实现方案
2020/06/10 Javascript
[11:27]《一刀刀一天》之DOTA全时刻20:TI4总奖金突破920W TS赛事分析
2014/06/18 DOTA
[02:38]DOTA2亚洲邀请赛 IG战队巡礼
2015/02/03 DOTA
[01:48]帕吉至宝加入游戏,遗迹战场现“千劫神屠”
2018/04/07 DOTA
[02:37]TI8勇士令状不朽珍藏II视频展示
2018/06/23 DOTA
利用Python开发微信支付的注意事项
2016/08/19 Python
Python pandas.DataFrame 找出有空值的行
2019/09/09 Python
Python PyPDF2模块安装使用解析
2020/01/19 Python
python 合并多个excel中同名的sheet
2021/01/22 Python
CSS3不透明度实例讲解
2016/04/26 HTML / CSS
css3加js做一个简单的3D行星运转效果实例代码
2017/01/18 HTML / CSS
HTML5之SVG 2D入门4—笔画与填充
2013/01/30 HTML / CSS
详解WebSocket跨域问题解决
2018/08/06 HTML / CSS
Lookfantastic法国官网:英国知名美妆购物网站
2017/10/28 全球购物
Pandora德国官网:购买潘多拉手链、戒指、项链和耳环
2020/02/20 全球购物
美国婴儿服装购物网站:Gerber Childrenswear
2020/05/06 全球购物
加工操作管理制度
2014/01/19 职场文书
高等教育学专业自荐书
2014/06/17 职场文书
教师工作自我鉴定范文
2014/09/14 职场文书
社区义诊通知
2015/04/24 职场文书
安全第一课观后感
2015/06/18 职场文书
新闻稿标题
2015/07/18 职场文书
html5调用摄像头截图功能
2022/01/18 Javascript
解决vue自定义组件@click点击失效问题
2022/04/30 Vue.js