PHP中3种生成XML文件方法的速度效率比较


Posted in PHP onOctober 06, 2012

PHP中3种生成XML文件方法的速度比较
有3种方法,分别是直接写;使用DomDocument;使用SimpleXML;
其实还有第4种:使用XMLWriter,不过我没用过,也懒得试了.
主要是想看看这3种方式哪个速度要快些
直接上代码:

private function directWriteXml(&$data){
  $xmltext='<?xml version="1.0" encoding="UTF-8" ?>';
  $xmltext .='<DocumentData>';
  $xmltext .='<Detail>';
  $loop=count($data);
  foreach ($data as $d){
   $xmltext .=" <Row ID=\" {$d['id']} \"  Name=\" {$d['name']}\" />";
  }
  $xmltext .='</Detail>';
  $xmltext .='</DocumentData>';
  return $xmltext;
 }
 private function useDomDocument(&$data){
  //  创建一个XML文档并设置XML版本和编码。。
  $dom=new DomDocument('1.0', 'utf-8');
  //  创建根节点
  $detail01 = $dom->createElement('Detail');
  $dom->appendchild($detail01);
  foreach ($data as $d) {
      $row = $dom->createElement('Row'," ID=\" {$d['id']} \"  Name=\" {$d['name']}\" " );
      $detail01->appendchild($row);
  }
  return $dom->saveXML();
 }
 private function useSimpleXML(&$data){
  //  创建一个XML文档并设置XML版本和编码。。
  $string = <<<XML
<?xml version='1.0' encoding='utf-8'?>
<detail01>
</detail01>
XML;
  $xml = simplexml_load_string($string);
  foreach ($data as $d) {
      $xml->addChild('Row'," ID=\" {$d['id']} \"  Name=\" {$d['name']}\" " );
  }
  return $xml->asXML(); ;
 }

调用时每个都加上大数循环操作,并记录时间
 $loop=10000;
  $xml='';
  switch($_GET['id']){
   case 1:
     $ts=$this->microtime_float();
     for( $i=0; $i<$loop; $i++)
      $xml=$this->directWriteXml($depdata);
     $te=$this->microtime_float();
     $t=$te-$ts;
     $this->assign('times',$t);
     $this->assign('method','直接写');
     break;
   case 2:
     $ts=$this->microtime_float();
     for( $i=0; $i<$loop; $i++)
      $xml=$this->useDomDocument($depdata);
     $te=$this->microtime_float();
     $t=$te-$ts;
     $this->assign('times',$t);
     $this->assign('method','DomDocument');
     break;
   case 3:
     $ts=$this->microtime_float();
     for( $i=0; $i<$loop; $i++)
      $xml=$this->useSimpleXML($depdata);
     $te=$this->microtime_float();
     $t=$te-$ts;
     $this->assign('times',$t);
     $this->assign('method','SimpleXML');
     break;
  }
  echo $xml;

实测结果不出所料,直接写最快,耗时只有其他方式的1/3左右. 而其他2种方法差不多,相比之下SimpleXML要快一些.
PHP 相关文章推荐
Win9x/ME下Apache+PHP安装配置
Oct 09 PHP
用PHP发电子邮件
Oct 09 PHP
php数组总结篇(一)
Sep 30 PHP
php中处理mysql_fetch_assoc返回来的数组 不用foreach----echo
May 04 PHP
自己在做项目过程中学到的PHP知识收集
Aug 20 PHP
PHP与Java进行通信的实现方法
Oct 21 PHP
使用PHP curl模拟浏览器抓取网站信息
Oct 28 PHP
php禁止浏览器使用缓存页面的方法
Nov 07 PHP
php字符串函数学习之substr()
Mar 27 PHP
PHP未登录自动跳转到登录页面
Dec 21 PHP
workerman结合laravel开发在线聊天应用的示例代码
Oct 30 PHP
如何利用PHP实现上传图片功能详解
Sep 24 PHP
PHP中的生成XML文件的4种方法分享
Oct 06 #PHP
PHP 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)
Oct 05 #PHP
PHP正则表达式之定界符和原子介绍
Oct 05 #PHP
PHP超级全局变量数组小结
Oct 04 #PHP
PHP中数字检测is_numeric与ctype_digit的区别介绍
Oct 04 #PHP
php 保留字列表
Oct 04 #PHP
php使HTML标签自动补全闭合函数代码
Oct 04 #PHP
You might like
PHP中使用strpos函数实现屏蔽敏感关键字功能
2014/08/21 PHP
PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
2014/09/24 PHP
php中注册器模式类用法实例分析
2015/11/03 PHP
Yii框架创建cronjob定时任务的方法分析
2017/05/23 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
2019/03/30 PHP
音乐播放用的的几个函数
2006/09/07 Javascript
Firefox div高度自适应
2009/04/28 Javascript
passwordStrength 基于jquery的密码强度检测代码使用介绍
2011/10/08 Javascript
js实现获取焦点后光标在字符串后
2014/09/17 Javascript
angularJS中router的使用指南
2015/02/09 Javascript
基于javascript实现彩票随机数生成(简单版)
2020/04/17 Javascript
JS递归遍历对象获得Value值方法技巧
2016/06/14 Javascript
关于JavaScript和jQuery的类型判断详解
2016/10/08 Javascript
详解jQuery插件开发方式
2016/11/22 Javascript
js实现随机抽选效果、随机抽选红色球效果
2017/01/13 Javascript
微信小程序之页面跳转和参数传递的实现
2017/09/29 Javascript
AngularJS实现controller控制器间共享数据的方法示例
2017/10/30 Javascript
Vue修改mint-ui默认样式的方法
2018/02/03 Javascript
详解Puppeteer前端自动化测试实践
2019/02/21 Javascript
通过vue手动封装on、emit、off的代码详解
2019/05/29 Javascript
Vue Elenent实现表格相同数据列合并
2020/11/30 Vue.js
python中threading超线程用法实例分析
2015/05/16 Python
python实现日常记账本小程序
2018/03/10 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
2018/11/15 Python
django ManyToManyField多对多关系的实例详解
2019/08/09 Python
关于Flask项目无法使用公网IP访问的解决方式
2019/11/19 Python
关于numpy.where()函数 返回值的解释
2019/12/06 Python
HTML中使用SVG与SVG预定义形状元素介绍
2013/06/28 HTML / CSS
Ray-Ban雷朋太阳眼镜英国官网:Ray-Ban UK
2019/11/23 全球购物
改革共识倡议书
2014/08/29 职场文书
学校元旦晚会开场白
2014/12/14 职场文书
餐饮服务员岗位职责
2015/02/09 职场文书
师范生见习总结范文
2015/06/23 职场文书
个人催款函范文
2015/06/23 职场文书
python实现自动化群控的步骤
2021/04/11 Python
阿里云服务器(windows)手动部署FTP站点详细教程
2022/08/05 Servers