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 生成饼图 三维饼图
Sep 28 PHP
ajax php传递和接收变量实现思路及代码
Dec 19 PHP
使用PHP接收POST数据,解析json数据
Jun 28 PHP
深入apache配置文件httpd.conf的部分参数说明
Jun 28 PHP
php开启openssl的方法
May 15 PHP
PHP高手需要要掌握的知识点
Aug 21 PHP
PHP获取一段文本显示点阵宽度和高度的方法
Mar 12 PHP
Yii扩展组件编写方法实例分析
Jun 29 PHP
在PHP站点的页面上添加Facebook评论插件的实例教程
Jan 08 PHP
php微信公众号开发之关键词回复
Oct 20 PHP
php实现的数组转xml案例分析
Sep 28 PHP
YII2框架中actions的作用与使用方法示例
Mar 13 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+MySQL的聊天室设计
2006/10/09 PHP
PHP分页显示制作详细讲解
2006/10/09 PHP
在PHP3中实现SESSION的功能(一)
2006/10/09 PHP
PHP Header用于页面跳转要注意的几个问题总结
2008/10/03 PHP
PHP性能优化 产生高度优化代码
2011/07/22 PHP
10 个经典PHP函数
2013/10/17 PHP
兼容ie6浏览器的php下载文件代码分享
2014/07/14 PHP
自编函数解决pathinfo()函数处理中文问题
2014/11/03 PHP
在win系统安装配置 Memcached for PHP 5.3 图文教程
2015/03/03 PHP
PHP SESSION的增加、删除、修改、查看操作
2015/03/20 PHP
PHP7.0版本备注
2015/07/23 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
基于jQuery的可用于选项卡及幻灯的切换插件
2011/03/28 Javascript
通过JavaScript控制字体大小的代码
2011/10/04 Javascript
jQuery源码中的chunker 正则过滤符分析
2012/07/31 Javascript
javascript使用数组的push方法完成快速排序
2014/09/15 Javascript
jQuery可见性过滤器:hidden和:visibility用法实例
2015/06/24 Javascript
Ext JS框架中日期函数的用法及日期选择控件的实现
2016/05/21 Javascript
JavaScript排序算法动画演示效果的实现方法
2016/10/18 Javascript
node安装--linux下的快速安装教程
2017/03/21 Javascript
微信小程序 商城开发(ecshop )简单实例
2017/04/07 Javascript
React学习笔记之条件渲染(一)
2017/07/02 Javascript
JS实现的贪吃蛇游戏案例详解
2019/05/01 Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
2019/11/26 Javascript
JS 逻辑判断不要只知道用 if-else 和 switch条件判断(小技巧)
2020/05/27 Javascript
vue.js 输入框输入值自动过滤特殊字符替换中问标点操作
2020/08/31 Javascript
[01:18:21]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
python创建临时文件夹的方法
2015/07/06 Python
Python之dict(或对象)与json之间的互相转化实例
2018/06/05 Python
kafka监控获取指定topic的消息总量示例
2019/12/23 Python
Python通过正则库爬取淘宝商品信息代码实例
2020/03/02 Python
python 数据分析实现长宽格式的转换
2020/05/18 Python
奥巴马的演讲稿
2014/05/15 职场文书
“四风”问题的主要表现和危害思想汇报
2014/09/19 职场文书
大班下学期幼儿评语
2014/12/30 职场文书
浅谈Python 中的复数问题
2021/05/19 Python