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写的小东西
Dec 06 PHP
dedecms中显示数字验证码的修改方法
Mar 21 PHP
实用函数4
Nov 08 PHP
调整PHP的性能
Oct 30 PHP
显示youtube视频缩略图和Vimeo视频缩略图代码分享
Feb 13 PHP
php防止伪造的数据从URL提交方法
Jun 27 PHP
ThinkPHP惯例配置文件详解
Jul 14 PHP
PHP+MYSQL实现读写分离简单实战
Mar 13 PHP
php动态读取数据清除最右边距的方法
Apr 12 PHP
php多文件打包下载的实例代码
Jul 12 PHP
PHP容器类的两种实现方式示例
Jul 24 PHP
php并发加锁问题分析与设计代码实例讲解
Feb 26 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
php4与php5的区别小结(配置异同)
2011/12/20 PHP
CodeIgniter分页类pagination使用方法示例
2016/03/28 PHP
php中array_fill函数的实例用法
2021/03/02 PHP
用js实现的仿sohu博客更换页面风格(简单版)
2007/03/22 Javascript
JavaScript学习笔记(二) js对象
2011/10/25 Javascript
jQuery向上遍历DOM树之parents(),parent(),closest()之间的区别
2013/12/02 Javascript
wap手机图片滑动切换特效无css3元素js脚本编写
2014/07/28 Javascript
JavaScript中的包装对象介绍
2015/01/27 Javascript
JavaScript判断浏览器类型的方法
2015/02/10 Javascript
对比分析AngularJS中的$http.post与jQuery.post的区别
2015/02/27 Javascript
jQuery如何使用自动触发事件trigger
2015/11/29 Javascript
jquery插件uploadify实现带进度条的文件批量上传
2015/12/13 Javascript
JS实现简单的选择题测评系统代码思路详解(demo)
2017/09/03 Javascript
JavaScript定义函数的三种实现方法
2017/09/23 Javascript
iview form清除校验状态的实现
2019/09/19 Javascript
对vue生命周期的深入理解
2020/12/03 Vue.js
[46:04]Liquid vs VP Supermajor决赛 BO 第四场 6.10
2018/07/05 DOTA
python Django模板的使用方法(图文)
2013/11/04 Python
python使用PyFetion来发送短信的例子
2014/04/22 Python
Python文件与文件夹常见基本操作总结
2016/09/19 Python
Tesserocr库的正确安装方式
2018/10/19 Python
python爬虫学习笔记之pyquery模块基本用法详解
2020/04/09 Python
Python 改变数组类型为uint8的实现
2020/04/09 Python
Python爬取阿拉丁统计信息过程图解
2020/05/12 Python
pygame用blit()实现动画效果的示例代码
2020/05/28 Python
python爬虫快速响应服务器的做法
2020/11/24 Python
美国当红的名品折扣网:Gilt Groupe
2016/08/15 全球购物
印度购买眼镜和太阳镜网站:Coolwinks
2018/09/26 全球购物
品质主管的岗位职责
2013/12/04 职场文书
汽车维修工岗位职责
2014/02/12 职场文书
数学兴趣小组活动总结
2014/07/08 职场文书
人力资源部岗位职责
2015/02/11 职场文书
结婚老公保证书
2015/02/26 职场文书
Python办公自动化解决world文件批量转换
2021/09/15 Python
Python+Pillow+Pytesseract实现验证码识别
2022/05/11 Python
详解Spring Bean的配置方式与实例化
2022/06/10 Java/Android