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下使用无限生命期Session的方法
Mar 16 PHP
深入file_get_contents与curl函数的详解
Jun 25 PHP
php堆排序实现原理与应用方法
Jan 03 PHP
PHP判断一个字符串是否是回文字符串的方法
Mar 23 PHP
php实现文本数据导入SQL SERVER
May 17 PHP
PHP实现递归复制整个文件夹的类实例
Aug 03 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
Oct 20 PHP
WordPress中注册菜单与调用菜单的方法详解
Dec 18 PHP
使用Composer安装Yii框架的方法
Mar 15 PHP
PHP Ajax JavaScript Json获取天气信息实现代码
Aug 17 PHP
PDO::setAttribute讲解
Jan 29 PHP
基于Laravel 5.2 regex验证的正确写法
Sep 29 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文件下载类
2006/12/06 PHP
php查看网页源代码的方法
2015/03/13 PHP
PHP安全上传图片的方法
2015/03/21 PHP
fsockopen pfsockopen函数被禁用,SMTP发送邮件不正常的解决方法
2015/09/20 PHP
枚举JavaScript对象的函数
2006/12/22 Javascript
网站如何做到完全不需要jQuery也可以满足简单需求
2013/06/27 Javascript
gridpanel动态加载数据的实例代码
2013/07/18 Javascript
jquery实现在页面加载的时自动为日期插件添加当前日期
2014/08/20 Javascript
在Html中使用Requirejs进行模块化开发实例详解
2016/04/15 Javascript
基于js实现checkbox批量选中操作
2016/11/22 Javascript
js鼠标移动时禁止选中文字
2017/02/19 Javascript
jQuery插件FusionCharts绘制的2D帕累托图效果示例【附demo源码】
2017/03/28 jQuery
jQuery实现点击关注和取消功能
2017/07/03 jQuery
vue中的scope使用详解
2017/10/29 Javascript
javascript实现手动点赞效果
2019/04/09 Javascript
微信小程序实现Session功能及无法获取session问题的解决方法
2019/05/07 Javascript
layui 实现表格某一列显示图标
2019/09/19 Javascript
javascript 原型与原型链的理解及应用实例分析
2020/02/10 Javascript
[00:17]DOTA2荣耀之路5:It’s a disastah!
2018/05/28 DOTA
[49:08]Secret vs VP 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Scrapy爬虫实例讲解_校花网
2017/10/23 Python
python高效过滤出文件夹下指定文件名结尾的文件实例
2018/10/21 Python
关于Python核心框架tornado的异步协程的2种方法详解
2019/08/28 Python
pyqt5、qtdesigner安装和环境设置教程
2019/09/25 Python
tensorflow2.0保存和恢复模型3种方法
2020/02/03 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
2020/05/22 Python
德国网上宠物店:Zoobio
2018/05/23 全球购物
C/C++程序员常见面试题一
2012/12/08 面试题
单位刻章介绍信范文
2014/01/11 职场文书
计算机软件专业求职信
2014/06/10 职场文书
党员反腐倡廉学习心得体会
2015/08/15 职场文书
Python绘制地图神器folium的新人入门指南
2021/05/23 Python
基于JavaScript实现年月日三级联动
2021/06/22 Javascript
图文详解matlab原始处理图像几何变换
2021/07/09 Python
python turtle绘图
2022/05/04 Python
教你使用Ubuntu搭建DNS服务器
2022/09/23 Servers