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的String类代码
Apr 20 PHP
php笔记之:php函数range() round()和list()的使用说明
Apr 26 PHP
PHP面向对象之旅:深入理解static变量与方法
Jan 06 PHP
PHP使用GIFEncoder类生成的GIF动态图片验证码
Jul 01 PHP
php结合js实现点击超链接执行删除确认操作
Oct 31 PHP
php静态文件生成类实例分析
Jan 03 PHP
php中instanceof 与 is_a()区别分析
Mar 03 PHP
学习php设计模式 php实现访问者模式(Visitor)
Dec 07 PHP
Linux下编译redis和phpredis的方法
Apr 07 PHP
Yii控制器中操作视图js的方法
Jul 04 PHP
PHP给源代码加密的几种方法汇总(推荐)
Feb 06 PHP
laravel通过a标签从视图向控制器实现传值
Oct 15 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.ini实现Mysql导入数据库文件最大限制的修改方法
2007/12/11 PHP
ThinkPHP连接数据库及主从数据库的设置教程
2014/08/22 PHP
ThinkPHP提交表单时默认自动转义的解决方法
2014/11/25 PHP
Zend Framework教程之Zend_Config_Xml用法分析
2016/03/23 PHP
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
JS 判断代码全收集
2009/04/28 Javascript
JavaScript 开发规范要求(图文并茂)
2010/06/11 Javascript
没有document.getElementByName方法
2013/08/19 Javascript
jQuery 三击事件实现代码
2013/09/11 Javascript
jquery scroll()区分横向纵向滚动条的方法
2014/04/04 Javascript
逻辑表达式中与或非的用法详解
2016/06/06 Javascript
JavaScript数据结构之二叉树的计数算法示例
2017/04/13 Javascript
实例讲解DataTables固定表格宽度(设置横向滚动条)
2017/07/11 Javascript
Nodejs实现的操作MongoDB数据库功能完整示例
2019/02/02 NodeJs
微信小程序中限制激励式视频广告位显示次数(实现思路)
2019/12/06 Javascript
node爬取新型冠状病毒的疫情实时动态
2020/02/06 Javascript
[01:59]深扒TI7聊天轮盘语音出处 1
2017/05/11 DOTA
python解析中国天气网的天气数据
2014/03/21 Python
python进阶教程之异常处理
2014/08/30 Python
详解Python中的序列化与反序列化的使用
2015/06/30 Python
Python实现的简单模板引擎功能示例
2017/09/02 Python
python reduce 函数使用详解
2017/12/05 Python
Python实现的多项式拟合功能示例【基于matplotlib】
2018/05/15 Python
解决python读取几千万行的大表内存问题
2018/06/26 Python
CSS3中HSL和HSLA的简单使用示例
2015/07/14 HTML / CSS
贝玲妃英国官网:Benefit英国
2018/02/03 全球购物
如何在Cookie里面保存Unicode和国际化字符
2013/05/25 面试题
WINDOWS域的具体实现方式是什么
2014/02/20 面试题
教师自我鉴定范文
2013/11/10 职场文书
艺术学院毕业生求职信
2014/07/09 职场文书
2014物价局群众路线对照检查材料思想汇报
2014/09/21 职场文书
公安四风对照检查材料思想汇报
2014/10/11 职场文书
2015年销售员工作总结范文
2015/04/07 职场文书
甲午大海战观后感
2015/06/02 职场文书
python3 实现mysql数据库连接池的示例代码
2021/04/17 Python
JavaScript parseInt0.0000005打印5原理解析
2022/07/23 Javascript