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实际应用经验篇(8)
Oct 09 PHP
php中cookie的作用域
Mar 27 PHP
如何设置mysql允许外网访问
Jun 04 PHP
测试php函数的方法
Nov 13 PHP
PHP实现对文本数据库的常用操作方法实例演示
Jul 04 PHP
PHP使用range协议实现输出文件断点续传代码实例
Jul 04 PHP
php类的扩展和继承用法实例
Jun 20 PHP
十大使用PHP框架的理由
Sep 26 PHP
php获取图片信息的方法详解
Dec 10 PHP
PHP水印类,支持添加图片、文字、填充颜色区域的实现
Feb 04 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
Jul 26 PHP
PHP实现微信提现功能(微信商城)
Nov 21 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安装攻略:常见问题解答(三)
2006/10/09 PHP
php之字符串变相相减的代码
2007/03/19 PHP
PHP 基本语法格式
2009/12/15 PHP
有关JSON以及JSON在PHP中的应用
2010/04/09 PHP
php INI配置文件的解析实现分析
2011/01/04 PHP
php入门学习知识点三 PHP上传
2011/07/14 PHP
PHP 进度条函数的简单实例
2017/09/19 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
将jQuery应用于login页面的问题及解决
2009/10/17 Javascript
jquery实现div拖拽宽度示例代码
2013/07/31 Javascript
使用jQuery实现input数值增量和减量的方法
2015/01/24 Javascript
超链接怎么正确调用javascript函数
2016/05/23 Javascript
AngularJS基础 ng-show 指令简单示例
2016/08/03 Javascript
js实现table添加行tr、删除行tr、清空行tr的简单实例
2016/10/15 Javascript
jQuery动态创建元素以及追加节点的实现方法
2016/10/20 Javascript
Bootstrap基本组件学习笔记之缩略图(13)
2016/12/08 Javascript
详谈Angular 2+ 的表单(一)之模板驱动型表单
2017/04/25 Javascript
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
react build 后打包发布总结
2018/08/24 Javascript
vue中v-text / v-html使用实例代码详解
2019/04/02 Javascript
JavaScript实现PC端四格密码输入框功能
2020/02/19 Javascript
mpvue实现微信小程序快递单号查询代码
2020/04/03 Javascript
python中使用pyhook实现键盘监控的例子
2014/07/18 Python
Python3解决棋盘覆盖问题的方法示例
2017/12/07 Python
python利用插值法对折线进行平滑曲线处理
2018/12/25 Python
python flask框架实现传数据到js的方法分析
2019/06/11 Python
python实现图像随机裁剪的示例代码
2020/12/10 Python
HTML5中的新元素介绍
2008/10/17 HTML / CSS
加拿大廉价机票预订网站:CheapOair.ca
2018/03/04 全球购物
Giglio英国站:意大利奢侈品购物网
2018/03/06 全球购物
校园摄影活动策划方案
2014/02/05 职场文书
2014年财务经理工作总结
2014/12/08 职场文书
英文感谢信范文
2015/01/21 职场文书
毕业季聚会祝酒词!
2019/07/04 职场文书
幼师必备:幼儿园期末教师评语50条
2019/11/01 职场文书
日本动漫十大公认神作:第五现已全网禁播,《死亡笔记》在榜
2022/03/18 日漫