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 相关文章推荐
Yii PHP Framework实用入门教程(详细介绍)
Jun 18 PHP
PHP 利用Mail_MimeDecode类提取邮件信息示例
Jan 26 PHP
PHP小技巧之函数重载
Jun 02 PHP
php目录遍历函数opendir用法实例
Nov 20 PHP
php中mysql连接方式PDO使用详解
Feb 25 PHP
PHP往XML中添加节点的方法
Mar 12 PHP
PHP多态代码实例
Jun 26 PHP
php支持断点续传、分块下载的类
May 02 PHP
PHP进程通信基础之信号量与共享内存通信
Feb 19 PHP
PHP判断一个数组是另一个数组子集的方法详解
Jul 31 PHP
PHP模型Model类封装数据库操作示例
Mar 14 PHP
深入分析PHP设计模式
Jun 15 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来实现网络服务
2009/09/15 PHP
鼠标滚轴控制文本框值的JS代码
2013/11/19 Javascript
jquery中$(#form :input)与$(#form input)的区别
2014/08/18 Javascript
非常实用的12个jquery代码片段
2015/11/02 Javascript
js右下角弹出提示框示例代码
2016/01/12 Javascript
jQuery增加和删除表格项目及实现表格项目排序的方法
2016/05/30 Javascript
Vue.js父与子组件之间传参示例
2017/02/28 Javascript
vue.js事件处理器是什么
2017/03/20 Javascript
Ionic + Angular.js实现验证码倒计时功能的方法
2017/06/12 Javascript
jQuery plugin animsition使用小结
2017/09/14 jQuery
JavaScript判断输入是否为数字类型的方法总结
2017/09/28 Javascript
angularJs中$http获取后台数据的实例讲解
2018/08/08 Javascript
jQuery+CSS实现的标签页效果示例【测试可用】
2018/08/14 jQuery
clipboard在vue中的使用的方法示例
2018/10/19 Javascript
前端插件之Bootstrap Dual Listbox使用教程
2019/07/23 Javascript
Vue.set 全局操作简单示例
2019/09/19 Javascript
浅谈Layui的eleTree树式选择器使用方法
2019/09/25 Javascript
Node 使用express-http-proxy 做api网关的实现
2020/10/15 Javascript
python 正则式 概述及常用字符
2009/05/07 Python
python UNIX_TIMESTAMP时间处理方法分析
2016/04/18 Python
浅谈django开发者模式中的autoreload是如何实现的
2017/08/18 Python
Python+OpenCV人脸检测原理及示例详解
2020/10/19 Python
用Django实现一个可运行的区块链应用
2018/03/08 Python
Python Json模块中dumps、loads、dump、load函数介绍
2018/05/15 Python
Python多线程编程之多线程加锁操作示例
2018/09/06 Python
python 如何将数据写入本地txt文本文件的实现方法
2019/09/11 Python
django中url映射规则和服务端响应顺序的实现
2020/04/02 Python
django restframework serializer 增加自定义字段操作
2020/07/15 Python
使用jupyter notebook运行python和R的步骤
2020/08/13 Python
python用tkinter实现一个简易能进行随机点名的界面
2020/09/27 Python
HTML5的hidden属性兼容老浏览器的方法
2014/04/23 HTML / CSS
美国领先的水果篮送货公司和新鲜水果供应商:The Fruit Company
2018/02/13 全球购物
介绍一下grep命令的使用
2012/06/28 面试题
大学生关于奋斗的演讲稿
2014/01/09 职场文书
高中生自我评价范文2015
2015/03/03 职场文书
JavaScript实现一键复制内容剪贴板
2022/07/23 Javascript