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函数,php爱好者站推荐
Mar 19 PHP
php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
Oct 22 PHP
PHP+jQuery实现自动补全功能源码
May 15 PHP
解析在apache里面给php写虚拟目录的详细方法
Jun 24 PHP
解析php常用image图像函数集
Jun 24 PHP
php计算数组不为空元素个数的方法
Jan 27 PHP
VPS中使用LNMP安装WordPress教程
Dec 28 PHP
PHP、Python和Javascript的装饰器模式对比
Feb 03 PHP
深入讲解PHP Session及如何保持其不过期的方法
Aug 18 PHP
详解PHP匿名函数与注意事项
Mar 29 PHP
php实现xml与json之间的相互转换功能实例
Jul 07 PHP
PHP实现留言板功能的详细代码
Mar 25 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实现简单洗牌算法
2013/06/18 PHP
PHP使用socket发送HTTP请求的方法
2016/02/14 PHP
php getcwd与dirname(__FILE__)区别详解
2016/09/24 PHP
PDO::exec讲解
2019/01/28 PHP
Laravel 读取 config 下的数据方法
2019/10/13 PHP
javascript[js]获取url参数的代码
2007/10/17 Javascript
jQuery bind事件使用详解
2011/05/05 Javascript
javascript 基础篇2 数据类型,语句,函数
2012/03/14 Javascript
jquery和javascript的区别(常用方法比较)
2013/07/04 Javascript
解决jquery操作checkbox火狐下第二次无法勾选问题
2014/02/10 Javascript
基于jQuery通过jQuery.form.js插件使用ajax提交form表单
2015/08/17 Javascript
javascript瀑布流式图片懒加载实例解析与优化
2016/02/23 Javascript
Bootstrap3学习笔记(三)之表格
2016/05/20 Javascript
JavaScript toUpperCase()方法使用详解
2016/08/26 Javascript
JS仿京东移动端手指拨动切换轮播图效果
2020/04/10 Javascript
vue中的非父子间的通讯问题简单的实例代码
2017/07/19 Javascript
JavaScript数组的5种迭代方法
2017/09/29 Javascript
zTree节点文字过多的处理方法
2017/11/24 Javascript
vue-for循环嵌套操作示例
2019/01/28 Javascript
[02:36]DOTA2上海特锦赛 回忆电竞生涯的重要瞬间
2016/03/25 DOTA
你应该知道的python列表去重方法
2017/01/17 Python
对Python 除法负数取商的取整方式详解
2018/12/12 Python
Python中的几种矩阵乘法(小结)
2019/07/10 Python
windows下python安装pip方法详解
2020/02/10 Python
pymysql之cur.fetchall() 和cur.fetchone()用法详解
2020/05/15 Python
用python写爬虫简单吗
2020/07/28 Python
CSS3 input框的实现代码类似Google登录的动画效果
2020/08/04 HTML / CSS
全球最大的网上自行车商店:Chain Reaction Cycles
2016/12/02 全球购物
北京RT科技有限公司.net工程师面试题
2013/02/15 面试题
机械设计毕业生自荐信
2014/02/02 职场文书
红旗方阵解说词
2014/02/12 职场文书
2014年员工工作总结范文
2014/11/18 职场文书
工程部主管岗位职责
2015/02/12 职场文书
2015年环境整治工作总结
2015/05/22 职场文书
教你快速构建一个基于nginx的web集群项目
2021/11/27 Servers
Ubuntu18.04下QT开发Android无法连接设备问题解决实现
2022/06/01 Java/Android