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开发大型项目的一点经验
Oct 09 PHP
php下正则来匹配dede模板标签的代码
Aug 21 PHP
探讨捕获php错误信息方法的详解
Jun 09 PHP
PHP提高编程效率的20个要点
Sep 23 PHP
thinkphp微信开之安全模式消息加密解密不成功的解决办法
Dec 02 PHP
PHP错误处理函数
Apr 03 PHP
老生常谈PHP位运算的用途
Mar 12 PHP
使用XHProf查找PHP性能瓶颈的实例
Dec 13 PHP
php实现微信支付之退款功能
May 30 PHP
php-fpm重启导致的程序执行中断问题详解
Apr 29 PHP
php精度计算的问题解析
Jun 21 PHP
安装docker和docker-compose实例详解
Jul 30 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和ACCESS写聊天室(七)
2006/10/09 PHP
个人站长制做网页常用的php代码
2007/03/03 PHP
php生成局部唯一识别码LUID的代码
2012/10/06 PHP
php随机取mysql记录方法小结
2014/12/27 PHP
使用PHP连接多种数据库的实现代码(mysql,access,sqlserver,Oracle)
2016/12/21 PHP
在IE和VB中支持png图片透明效果的实现方法(vb源码打包)
2011/04/01 Javascript
Prototype的Class.create函数解析
2011/09/22 Javascript
可编辑下拉框的2种实现方式
2014/06/13 Javascript
使用Sticky组件实现带sticky效果的tab导航和滚动导航的方法
2016/03/22 Javascript
如何让一个json文件显示在表格里【实现代码】
2016/05/09 Javascript
常用的js验证和数据处理总结
2016/08/02 Javascript
浅谈jquery高级方法描述与应用
2016/10/04 Javascript
JavaScript页面实时显示当前时间实例代码
2016/10/23 Javascript
微信小程序如何实现在线客服功能
2019/10/16 Javascript
详解webpack的clean-webpack-plugin插件报错
2020/10/16 Javascript
[05:36]DOTA2 2015国际邀请赛中国区预选赛第四日TOP10
2015/05/29 DOTA
[00:55]2015国际邀请赛中国区预选赛5月23日——28日约战上海
2015/05/25 DOTA
Python中用Ctrl+C终止多线程程序的问题解决
2013/03/30 Python
python小技巧之批量抓取美女图片
2014/06/06 Python
使用Python下的XSLT API进行web开发的简单教程
2015/04/15 Python
Python使用matplotlib绘制三维图形示例
2018/08/25 Python
Python docx库用法示例分析
2019/02/16 Python
django中使用事务及接入支付宝支付功能
2019/09/15 Python
python 将dicom图片转换成jpg图片的实例
2020/01/13 Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
2020/02/11 Python
python实现图片转字符画
2021/02/19 Python
从一次项目重构说起CSS3自定义变量在项目的使用方法
2021/03/01 HTML / CSS
极度干燥澳大利亚官方网站:Superdry澳大利亚
2019/03/28 全球购物
护理毕业生自我鉴定
2014/02/11 职场文书
QQ空间主人寄语大全
2014/04/12 职场文书
企业文化宣传标语
2014/06/09 职场文书
产品质量保证书范本
2015/02/27 职场文书
简历中的自我评价怎么写呢?
2019/04/30 职场文书
go web 预防跨站脚本的实现方式
2021/06/11 Golang
MySQL中几种插入和批量语句实例详解
2021/09/14 MySQL
无线电知识基础入门篇
2022/02/18 无线电