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开发GUI
Oct 09 PHP
PHP 远程文件管理,可以给表格排序,遍历目录,时间排序
Aug 07 PHP
解析PHP获取当前网址及域名的实现代码
Jun 23 PHP
IIS6.0中配置php服务全过程解析
Aug 07 PHP
php实现对两个数组进行减法操作的方法
Apr 17 PHP
php实现修改新闻时删除图片的方法
May 12 PHP
smarty循环嵌套用法示例分析
Jul 19 PHP
php实现支持中文的文件下载功能示例
Aug 30 PHP
PHP程序员学习使用Swoole的理由
Jun 24 PHP
TP5框架页面跳转样式操作示例
Apr 05 PHP
php实现记事本案例
Oct 20 PHP
PHP如何解决微信文章图片防盗链
Dec 09 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学习之简单计算器实现代码
2011/06/09 PHP
利用中国天气预报接口实现简单天气预报
2014/01/20 PHP
PHP调用VC编写的COM组件实例
2014/03/29 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
jQuery使用手册之 事件处理
2007/03/24 Javascript
基于jQuery图片平滑连续滚动插件
2009/04/27 Javascript
一个页面放2段图片滚动代码出现冲突的问题如何解决
2012/12/21 Javascript
利用js读取动态网站从服务器端返回的数据
2014/02/10 Javascript
javascript匿名函数实例分析
2014/11/18 Javascript
Javascript中的包装类型介绍
2015/04/02 Javascript
深究AngularJS——ng-checked(回写:带真实案例代码)
2017/06/13 Javascript
深入浅析vue组件间事件传递
2017/12/29 Javascript
element ui 对话框el-dialog关闭事件详解
2018/02/26 Javascript
JavaScript判断日期时间差的实例代码
2018/03/01 Javascript
浅谈Vue项目骨架屏注入实践
2019/08/05 Javascript
Vue如何基于es6导入外部js文件
2020/05/15 Javascript
vue动态设置页面title的方法实例
2020/08/23 Javascript
Echarts.js无法引入问题解决方案
2020/10/30 Javascript
Python ZipFile模块详解
2013/11/01 Python
用python制作游戏外挂
2018/01/04 Python
Python列表解析配合if else的方法
2018/06/23 Python
python2.7和NLTK安装详细教程
2018/09/19 Python
python3转换code128条形码的方法
2019/04/17 Python
Python监控服务器实用工具psutil使用解析
2019/12/19 Python
python3中关于excel追加写入格式被覆盖问题(实例代码)
2020/01/10 Python
python适合做数据挖掘吗
2020/06/16 Python
Python定义一个Actor任务
2020/07/29 Python
Html5 audio标签样式的修改
2016/01/28 HTML / CSS
Theflamel意大利:女士奢华服装、鞋子和配件
2020/01/11 全球购物
应届毕业生求职信
2014/05/26 职场文书
欢迎新生标语
2014/10/06 职场文书
优质服务心得体会(共4篇)
2016/01/22 职场文书
2019企业给员工的慰问信
2019/06/24 职场文书
该怎么书写道歉信?
2019/07/03 职场文书
写一个Python脚本自动爬取Bilibili小视频
2021/04/24 Python
Nginx如何配置多个服务域名解析共用80端口详解
2022/09/23 Servers