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&amp;java(二)
Oct 09 PHP
使用PHP 5.0创建图形的巧妙方法
Oct 12 PHP
php 字符串中的\n换行符无效、不能换行的解决方法
Apr 02 PHP
thinkphp缓存技术详解
Dec 09 PHP
php获取远程文件的内容和大小
Nov 03 PHP
php运行报错Call to undefined function curl_init()的最新解决方法
Nov 20 PHP
PHP检测数据类型的几种方法(总结)
Mar 04 PHP
PHP后台实现微信小程序登录
Aug 03 PHP
PHP PDOStatement::errorInfo讲解
Jan 31 PHP
PHP使用HTML5 FormData对象提交表单操作示例
Jul 02 PHP
PHP反射原理与用法深入分析
Sep 28 PHP
php的lavarel框架中join和orWhere的用法
Dec 28 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
win2003服务器使用WPS的COM组件的一些问题解决方法
2012/01/11 PHP
IIS下PHP的三种配置方式对比
2014/11/20 PHP
PHP执行linux命令常用函数汇总
2016/02/02 PHP
php $_SESSION会员登录实例分享
2021/01/19 PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
2016/05/18 PHP
php实现数组纵向转横向并过滤重复值的方法分析
2017/05/29 PHP
php如何计算两坐标点之间的距离
2018/12/29 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
纯js分页代码(简洁实用)
2013/11/05 Javascript
浅析JS中document对象的一些重要属性
2014/03/06 Javascript
javascript实现的平方米、亩、公顷单位换算小程序
2014/08/11 Javascript
jQuery插件slider实现拖动滑块选取价格范围
2015/04/30 Javascript
javascript实现复选框全选或反选
2017/02/04 Javascript
js学习总结之DOM2兼容处理顺序问题的解决方法
2017/07/27 Javascript
dropload.js插件下拉刷新和上拉加载使用详解
2017/10/20 Javascript
vue+Vue Router多级侧导航切换路由(页面)的实现代码
2018/12/20 Javascript
vue 实现特定条件下绑定事件
2019/11/09 Javascript
python快速查找算法应用实例
2014/09/26 Python
Python中字典的基本知识初步介绍
2015/05/21 Python
Python实现去除列表中重复元素的方法小结【4种方法】
2018/04/27 Python
Python 读取某个目录下所有的文件实例
2018/06/23 Python
Python实现登陆文件验证方法
2018/10/06 Python
python Selenium实现付费音乐批量下载的实现方法
2019/01/24 Python
python中enumerate() 与zip()函数的使用比较实例分析
2019/09/03 Python
python用requests实现http请求代码实例
2019/10/31 Python
用python爬取历史天气数据的方法示例
2019/12/30 Python
Python中socket网络通信是干嘛的
2020/05/27 Python
整理HTML5中表单的常用属性及新属性
2016/02/19 HTML / CSS
iframe跨域的几种常用方法
2019/11/11 HTML / CSS
欧缇丽美国官网:Caudalie美国
2016/12/31 全球购物
在使用非全零作为空指针内部表达的机器上, NULL是如何定义
2014/11/09 面试题
创业资金计划书
2014/02/06 职场文书
社区班子对照检查材料
2014/08/27 职场文书
法英专业大学生职业生涯规划范文:衡外情,量己力!
2014/09/23 职场文书
2014年个人工作总结模板
2014/12/15 职场文书
解决mysql模糊查询索引失效问题的几种方法
2021/06/18 MySQL