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 相关文章推荐
Zend公司全球首推PHP认证
Oct 09 PHP
php iconv() : Detected an illegal character in input string
Dec 05 PHP
php文件操作实例代码
May 10 PHP
逆序二维数组插入一元素的php代码
Jun 08 PHP
ThinkPHP3.2.2的插件控制器功能简述
Jul 09 PHP
php实现数组按指定KEY排序的方法
Mar 30 PHP
PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能
Apr 27 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
May 21 PHP
学习php设计模式 php实现命令模式(command)
Dec 08 PHP
CodeIgniter辅助之第三方类库third_party用法分析
Jan 20 PHP
PHP目录操作实例总结
Sep 27 PHP
php显示页码分页类的封装
Jun 08 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/07/07 PHP
深入php常用函数的使用汇总
2013/06/08 PHP
使用HMAC-SHA1签名方法详解
2013/06/26 PHP
ThinkPHP模版引擎之变量输出详解
2014/12/05 PHP
PHP中使用CURL发送get/post请求上传图片批处理功能
2018/10/15 PHP
laravel 创建命令行命令的图文教程
2019/10/23 PHP
实现连缀调用的map方法(prototype)
2009/08/05 Javascript
利用ajaxfileupload插件实现文件上传无刷新的具体方法
2013/06/08 Javascript
firefox下jquery ajax返回object XMLDocument处理方法
2014/01/26 Javascript
网页右侧悬浮滚动在线qq客服代码示例
2014/04/28 Javascript
浅谈javascript中基本包装类型
2015/06/03 Javascript
JS简单实现多级Select联动菜单效果代码
2015/09/06 Javascript
javascript求日期差的方法
2016/03/02 Javascript
浅析Bootstrap组件之面板组件
2016/05/04 Javascript
实例讲解使用原生JavaScript处理AJAX请求的方法
2016/05/10 Javascript
对angularJs中controller控制器scope父子集作用域的实例讲解
2018/10/08 Javascript
Vue实现图书管理案例
2021/01/20 Vue.js
用Python生成器实现微线程编程的教程
2015/04/13 Python
python 限制函数调用次数的实例讲解
2018/04/21 Python
python判断一个数是否能被另一个整数整除的实例
2018/12/12 Python
深入解析Python小白学习【操作列表】
2019/03/23 Python
python使用Plotly绘图工具绘制水平条形图
2020/03/25 Python
python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法
2019/10/04 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
2019/10/06 Python
python plt可视化——打印特殊符号和制作图例代码
2020/04/17 Python
python 实现的IP 存活扫描脚本
2020/12/10 Python
Python中lru_cache的使用和实现详解
2021/01/25 Python
巴基斯坦购物网站:Goto
2019/03/11 全球购物
机械专业求职信范文
2014/07/15 职场文书
汽车机电维修工求职信
2014/09/30 职场文书
领导班子整改方案
2014/10/25 职场文书
2014年学校党建工作汇报材料
2014/11/02 职场文书
会计电算化实训报告
2014/11/04 职场文书
三方协议书
2015/01/27 职场文书
奔腾年代观后感
2015/06/09 职场文书
详解Go语言Slice作为函数参数的使用
2021/07/02 Golang