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 相关文章推荐
用Flash图形化数据(一)
Oct 09 PHP
PHP面向对象的使用教程 简单数据库连接
Nov 25 PHP
php合并数组array_merge函数运算符加号与的区别
Oct 31 PHP
深入理解PHP几个算法:PHP冒泡、PHP二分法、PHP求素数、PHP乘法表
Jun 06 PHP
深入php处理整数函数的详解
Jun 09 PHP
PHP中的日期加减方法示例
Aug 21 PHP
CodeIgniter针对数据库的连接、配置及使用方法
Mar 03 PHP
php版阿里大于(阿里大鱼)短信发送实例详解
Nov 30 PHP
PHP堆栈调试操作简单示例
Jun 15 PHP
thinkPHP框架整合tcpdf插件操作示例
Aug 07 PHP
php获取微信openid方法总结
Oct 10 PHP
PHP 实现缩略图
Mar 09 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
咖啡与牛奶
2021/03/03 冲泡冲煮
PHP输出XML到页面的3种方法详解
2013/06/06 PHP
php 地区分类排序算法
2013/07/01 PHP
PHP程序员不应该忽略的3点
2015/10/09 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
Laravel如何实现自动加载类
2019/10/14 PHP
javascript 图片上传预览-兼容标准
2009/06/01 Javascript
jQuery最佳实践完整篇
2011/08/20 Javascript
jquery中的事件处理详细介绍
2013/06/24 Javascript
js、css、img等浏览器缓存问题的2种解决方案
2013/10/23 Javascript
jquery ajax jsonp跨域调用实例代码
2013/12/11 Javascript
微信小程序多张图片上传功能
2017/06/07 Javascript
Angular利用trackBy提升性能的方法
2018/01/26 Javascript
vue .sync修饰符的使用详解
2018/06/15 Javascript
使用elementUI实现将图片上传到本地的示例
2018/09/04 Javascript
vue多次循环操作示例
2019/02/08 Javascript
react koa rematch 如何打造一套服务端渲染架子
2019/06/26 Javascript
JS array数组检测方式解析
2020/05/19 Javascript
python3编写C/S网络程序实例教程
2014/08/25 Python
举例讲解Python中装饰器的用法
2015/04/27 Python
python得到windows自启动列表的方法
2018/10/14 Python
pyqt5 键盘监听按下enter 就登陆的实例
2019/06/25 Python
Django项目创建到启动详解(最全最详细)
2019/09/07 Python
通过实例了解Python异常处理机制底层实现
2020/07/23 Python
python使用selenium爬虫知乎的方法示例
2020/10/28 Python
收集的22款给力的HTML5和CSS3帮助工具
2012/09/14 HTML / CSS
三好学生演讲稿范文
2014/04/26 职场文书
平安工地汇报材料
2014/08/19 职场文书
群众路线教育实践活动整改方案(个人版)
2014/10/25 职场文书
公司给客户的感谢信
2015/01/23 职场文书
同步小康驻村工作简报
2015/07/20 职场文书
幼儿园班级管理心得体会
2016/01/07 职场文书
JVM钩子函数的使用场景详解
2021/08/23 Java/Android
全新239军机修复记
2022/04/05 无线电
SQL SERVER中的流程控制语句
2022/05/25 SQL Server
flex布局中使用flex-wrap实现换行的项目实践
2022/06/21 HTML / CSS