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学习资料汇总与网址
Mar 16 PHP
PHP一些常用的正则表达式字符的一些转换
Jul 29 PHP
php 图片上添加透明度渐变的效果
Jun 29 PHP
php 无极分类(递归)实现代码
Jan 05 PHP
PHP中使用FFMPEG获取视频缩略图和视频总时长实例
May 04 PHP
PHP中定义数组常量(array常量)的方法
Nov 17 PHP
php实现parent调用父类的构造方法与被覆写的方法
Feb 11 PHP
php文件上传你必须知道的几点
Oct 20 PHP
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
Nov 05 PHP
Apache无法自动跳转却显示目录的解决方法
Nov 30 PHP
asp函数split()对应php函数explode()
Feb 27 PHP
thinkPHP事务操作简单案例分析
Oct 17 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 syntax error, unexpected $end 错误的一种原因及解决
2008/10/25 PHP
php Smarty模板生成html文档的方法
2010/04/12 PHP
ThinkPHP中limit()使用方法详解
2016/04/19 PHP
PHP判断JSON对象是否存在的方法(推荐)
2016/07/06 PHP
php实现单笔转账到支付宝功能
2018/10/09 PHP
php解决约瑟夫环算法实例分析
2019/09/30 PHP
Thinkphp 框架配置操作之动态配置、扩展配置及批量配置实例分析
2020/05/15 PHP
JS解析json数据并将json字符串转化为数组的实现方法
2012/12/25 Javascript
JS中获取数据库中的值的方法
2013/07/14 Javascript
Mac地址验证的javascript代码
2013/11/09 Javascript
PHP 数组current和next用法分享
2015/03/05 Javascript
SublimeText自带格式化代码功能之reindent
2015/12/27 Javascript
BootStrap selectpicker
2016/06/20 Javascript
关于原生js中bind函数的简单实现
2016/08/10 Javascript
ionic实现滑动的三种方式
2016/08/27 Javascript
微信小程序 新建登录页并实现tabBar隐藏
2017/06/13 Javascript
nodejs创建简易web服务器与文件读写的实例
2017/09/07 NodeJs
js中的 || 与 &amp;&amp; 运算符详解
2018/05/24 Javascript
js实现动态增加文件域表单功能
2018/10/22 Javascript
在微信小程序中渲染HTML内容3种解决方案及分析与问题解决
2020/01/12 Javascript
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
vue 导出文件,携带请求头token操作
2020/09/10 Javascript
python实现kMeans算法
2017/12/21 Python
对python的文件内注释 help注释方法
2018/05/23 Python
Python os.access()用法实例
2019/02/18 Python
python3.7 的新特性详解
2019/07/25 Python
Python是怎样处理json模块的
2020/07/16 Python
HTML5拖拽文件到浏览器并实现文件上传下载功能代码
2013/06/06 HTML / CSS
全球最大的游戏市场:G2A
2018/07/05 全球购物
Tiqets英国:智能手机上的文化和娱乐门票
2019/07/10 全球购物
一加手机美国官方网站:OnePlus美国
2019/09/19 全球购物
Java编程面试题
2016/04/04 面试题
早读迟到检讨书
2014/01/24 职场文书
公司外出活动方案
2014/08/14 职场文书
2014年药剂科工作总结
2014/11/26 职场文书
Python数据分析之pandas函数详解
2021/04/21 Python