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 相关文章推荐
php判断变量类型常用方法
Apr 24 PHP
用PHP即时捕捉PHP中的错误并发送email通知的实现代码
Jan 19 PHP
phpadmin如何导入导出大数据文件及php.ini参数修改
Feb 18 PHP
PHP中一些可以替代正则表达式函数的字符串操作函数
Nov 17 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
Nov 22 PHP
php递归法读取目录及文件的方法
Jan 30 PHP
PHP使用逆波兰式计算工资的方法
Jul 29 PHP
PHP获取二维数组中某一列的值集合
Dec 25 PHP
php获取访问者浏览页面的浏览器类型
Jan 23 PHP
阿里云Win2016安装Apache和PHP环境图文教程
Mar 11 PHP
yii2的restful api路由实例详解
May 14 PHP
微信小程序和php的登录实现
Apr 01 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
thinkPHP中_initialize方法实例分析
2016/12/05 PHP
PHP强制转化的形式整理
2020/05/22 PHP
宝塔面板在NGINX环境中TP5.1如何运行?
2021/03/09 PHP
javascript闭包的理解和实例
2010/08/12 Javascript
js为数字添加逗号并格式化数字的代码
2013/08/23 Javascript
jquery选择器之基本过滤选择器详解
2014/01/27 Javascript
js实现有时间限制消失的图片方法
2015/02/27 Javascript
js如何实现点击标签文字,文字在文本框出现
2015/08/05 Javascript
详谈jQuery unbind 删除绑定事件 / 移除标签方法
2017/03/02 Javascript
ES6中Proxy与Reflect实现重载(overload)的方法
2017/03/30 Javascript
浅谈Vue.js中的v-on(事件处理)
2017/09/05 Javascript
基于bootstrap写的一点localStorage本地储存
2017/11/21 Javascript
详解vue中async-await的使用误区
2018/12/05 Javascript
vue中activated的用法
2021/01/03 Vue.js
[06:53]2018DOTA2国际邀请赛寻真——为复仇而来的Newbee
2018/08/15 DOTA
[51:39]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第二场 2月7日
2021/03/11 DOTA
Python使用openpyxl读写excel文件的方法
2017/06/30 Python
对numpy中array和asarray的区别详解
2018/04/17 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
2020/03/06 Python
用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
2020/05/17 Python
k-means 聚类算法与Python实现代码
2020/06/01 Python
Python爬取12306车次信息代码详解
2020/08/12 Python
pycharm中leetcode插件使用图文详解
2020/12/07 Python
python 利用panda 实现列联表(交叉表)
2021/02/06 Python
世界上最大的网络主机公司:1&1
2016/10/12 全球购物
lookfantastic荷兰:在线购买奢华护肤、护发和化妆品
2018/11/27 全球购物
ProForm英国站点:健身房和健身器材网上商店
2019/06/05 全球购物
事业单位个人应聘自荐信
2013/09/21 职场文书
市场营销专业个人自荐信格式
2013/09/21 职场文书
计算机网络专业推荐信
2013/11/24 职场文书
鉴定评语大全
2014/05/05 职场文书
委托书格式
2014/08/01 职场文书
党员批评与自我批评(5篇)
2014/09/23 职场文书
冬季作息时间调整通知
2015/04/24 职场文书
2015年农村党员公开承诺事项
2015/04/28 职场文书
Python下opencv库的安装过程及问题汇总
2021/06/11 Python