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 相关文章推荐
漂亮但不安全的CTB
Oct 09 PHP
php 字符串函数收集
Mar 29 PHP
php表单提交问题的解决方法
Apr 12 PHP
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
Jul 02 PHP
php/js获取客户端mac地址的实现代码
Jul 08 PHP
ubuntu12.04使用c编写php扩展模块教程分享
Dec 25 PHP
phpmailer在服务器上不能正常发送邮件的解决办法
Jul 08 PHP
PHP中使用循环实现的金字塔图形
Nov 08 PHP
一张表搞清楚php is_null、empty、isset的区别
Jul 07 PHP
PHP加密解密函数详解
Oct 28 PHP
php爬取天猫和淘宝商品数据
Feb 23 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
Apr 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
德劲1103二次变频版的打磨
2021/03/02 无线电
php遍历解析xml字符串的方法
2016/05/05 PHP
PHP入门教程之图像处理技巧分析
2016/09/11 PHP
关于Yii中模型场景的一些简单介绍
2019/09/22 PHP
HR vs CL BO3 第二场 2.13
2021/03/10 DOTA
js压缩工具 yuicompressor 使用教程
2010/03/31 Javascript
Jquery焦点与失去焦点示例应用
2014/06/10 Javascript
原生javascript实现Tab选项卡切换功能
2015/01/12 Javascript
JavaScript变量的作用域全解析
2015/08/14 Javascript
Node.js项目中调用JavaScript的EJS模板库的方法
2016/03/11 Javascript
如何使用jquery修改css中带有!important的样式属性
2016/04/28 Javascript
限制文本框只能输入数字||只能是数字和小数点||只能是整数和浮点数
2016/05/27 Javascript
Bootstrap CSS布局之列表
2016/12/15 Javascript
使用Vue开发动态刷新Echarts组件的教程详解
2018/03/22 Javascript
iview form清除校验状态的实现
2019/09/19 Javascript
一篇超完整的Vue新手入门指导教程
2020/11/18 Vue.js
Vue实现图书管理小案例
2020/12/03 Vue.js
Python实现将n个点均匀地分布在球面上的方法
2015/03/12 Python
python转换字符串为摩尔斯电码的方法
2015/07/06 Python
学习python类方法与对象方法
2016/03/15 Python
python Flask 装饰器顺序问题解决
2018/08/08 Python
Python进阶之全面解读高级特性之切片
2019/02/19 Python
Python+OpenCv制作证件图片生成器的操作方法
2019/08/21 Python
python3利用Axes3D库画3D模型图
2020/03/25 Python
html5拖拽应用记录及注意点
2020/05/27 HTML / CSS
STAY JAPAN台湾:预订日本民宿
2018/07/22 全球购物
乌克兰第一的珠宝网上商店:Gold.ua
2019/11/29 全球购物
高级方案规划工程师岗位职责
2013/11/29 职场文书
实习生求职自荐信
2014/02/07 职场文书
创业者是否需要商业计划书?
2014/02/07 职场文书
项目采购员岗位职责
2014/04/15 职场文书
政风行风自查自纠报告
2014/10/21 职场文书
求职自我评价怎么写
2015/03/09 职场文书
活动简报范文
2015/07/22 职场文书
javascript实现计算器功能详解流程
2021/11/01 Javascript
引用计数法和root搜索算法以及JVM中判定对象需要回收的方法
2022/04/19 Java/Android