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 10 PHP
微博短链接算法php版本实现代码
Sep 15 PHP
Zend的Registry机制的使用说明
May 02 PHP
php生成N个不重复的随机数实例
Nov 12 PHP
PHP APC配置文件2套和参数详解
Jun 11 PHP
php+mysqli实现批量执行插入、更新及删除数据的方法
Jan 29 PHP
Win7下手动安装apache2.2、php5.4笔记
Apr 03 PHP
nginx+thinkphp下解决不支持pathinfo模式
Jul 01 PHP
PHP读取zip文件的方法示例
Nov 17 PHP
php图像处理函数imagecopyresampled用法详解
Dec 02 PHP
PHP7 安装event扩展的实现方法
Oct 08 PHP
PHP安全之register_globals的on和off的区别
Jul 23 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
Windows7下PHP开发环境安装配置图文方法
2010/05/20 PHP
PHP详解ASCII码对照表与字符转换
2011/12/05 PHP
小谈php正则提取图片地址
2014/03/27 PHP
destoon实现不同会员组公司名称显示不同的颜色的方法
2014/08/22 PHP
JavaScript的Function详细
2006/11/14 Javascript
js数组操作常用方法
2014/05/08 Javascript
node.js中的http.createServer方法使用说明
2014/12/14 Javascript
JS动态添加iframe的代码
2015/09/14 Javascript
深入浅析JS的数组遍历方法(推荐)
2016/06/15 Javascript
jquery插入兄弟节点的操作方法
2016/12/07 Javascript
JavaScript判断变量名是否存在数组中的实例
2017/12/28 Javascript
微信小程序页面缩放式侧滑效果的实现代码
2018/11/15 Javascript
在Vue中使用icon 字体图标的方法
2019/06/14 Javascript
three.js利用gpu选取物体并计算交点位置的方法示例
2019/11/25 Javascript
typescript配置alias的详细步骤
2020/08/12 Javascript
JavaScript实现单点登录的示例
2020/09/23 Javascript
对Python的Django框架中的项目进行单元测试的方法
2016/04/11 Python
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
2018/01/26 Python
python实现字符串加密成纯数字
2019/03/19 Python
django实现将修改好的新模型写入数据库
2020/03/31 Python
Python检测端口IP字符串是否合法
2020/06/05 Python
使用Python封装excel操作指南
2021/01/29 Python
结合CSS3的布局新特征谈谈常见布局方法
2016/01/22 HTML / CSS
html5定位并在百度地图上显示的示例
2014/04/27 HTML / CSS
Original Penguin美国官网:布拉德皮特、强尼德普喜爱的服装品牌
2016/10/25 全球购物
Smallable意大利家庭概念店:设计师童装及家居装饰
2018/01/08 全球购物
Whittard官方海外旗舰店:英国百年茶叶品牌
2018/02/22 全球购物
June Jacobs尊积帕官网:知名的spa水疗护肤品牌
2019/03/21 全球购物
工商学院毕业生自荐信
2013/11/12 职场文书
安全生产活动月方案
2014/03/09 职场文书
党校毕业心得体会
2014/09/13 职场文书
学校党的群众路线教育实践活动整改措施
2014/10/25 职场文书
党的群众路线教育实践活动总结
2014/10/30 职场文书
教师党的群众路线学习心得体会
2014/11/04 职场文书
营业用房租赁协议书
2014/11/26 职场文书
Redis如何一键部署脚本
2021/04/12 Redis