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创建PDF中文文档
Oct 09 PHP
了解Joomla 这款来自国外的php网站管理系统
Mar 11 PHP
php 判断访客是否为搜索引擎蜘蛛的函数代码
Jul 29 PHP
提高PHP编程效率的方法
Nov 07 PHP
php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法
May 25 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
Apr 15 PHP
XHProf报告字段含义的解析
May 17 PHP
PHP7新特性foreach 修改示例介绍
Aug 26 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
Sep 22 PHP
php微信公众号开发之欢迎老朋友
Oct 20 PHP
关于laravel 子查询 &amp; join的使用
Oct 16 PHP
php微信小程序解包过程实例详解
Mar 31 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
PHP4在Windows2000下的安装
2006/10/09 PHP
php多重接口的实现方法
2015/06/20 PHP
php实现的XML操作(读取)封装类完整实例
2017/02/23 PHP
jquery判断checkbox(复选框)是否被选中的代码
2010/10/20 Javascript
JQuery制作的放大效果的popup对话框(未添加任何jquery plugin)分享
2013/04/28 Javascript
javascript获取url上某个参数的方法
2013/11/08 Javascript
javascript实现的平方米、亩、公顷单位换算小程序
2014/08/11 Javascript
node.js中的fs.fstatSync方法使用说明
2014/12/15 Javascript
面向切面编程(AOP)的理解
2015/05/01 Javascript
js表单提交和submit提交的区别实例分析
2015/12/10 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
2016/02/23 Javascript
jquery插件Jplayer使用方法简析
2016/04/22 Javascript
jQuery fadeOut 异步实例代码详解
2016/08/18 Javascript
使用Javascript监控前端相关数据的代码
2016/10/27 Javascript
Vue方法与事件处理器详解
2016/12/01 Javascript
ES6正则的扩展实例详解
2017/04/25 Javascript
解决vue打包之后静态资源图片失效的问题
2018/02/21 Javascript
angularJs自定义过滤器实现手机号信息隐藏的方法
2018/10/08 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
2019/02/28 Javascript
vue中使用vue-cli接入融云实现即时通信
2019/04/19 Javascript
微信小程序实现发送模板消息功能示例【通过openid推送消息给用户】
2019/05/05 Javascript
vue+element实现表单校验功能
2019/05/20 Javascript
微信小程序实现form表单本地储存数据
2019/06/27 Javascript
关于JS解构的5种有趣用法
2019/09/05 Javascript
vue 自定义组件的写法与用法详解
2020/03/04 Javascript
解决iview table组件里的 固定列 表格不自适应的问题
2020/11/13 Javascript
python使用win32com在百度空间插入html元素示例
2014/02/20 Python
用Python编写简单的定时器的方法
2015/05/02 Python
简介Django中内置的一些中间件
2015/07/24 Python
python实现对求解最长回文子串的动态规划算法
2018/06/02 Python
Django单元测试工具test client使用详解
2019/08/02 Python
Django框架model模型对象验证实现方法分析
2019/10/02 Python
Python判断字符串是否为空和null方法实例
2020/04/26 Python
南京软件公司的.net程序员笔试题
2014/08/31 面试题
Kubernetes中Deployment的升级与回滚
2022/04/01 Servers
服务器间如何实现文件共享
2022/05/20 Servers