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程序?
Dec 08 PHP
php自动适应范围的分页代码
Aug 05 PHP
使用Apache的htaccess防止图片被盗链的解决方法
Apr 27 PHP
利用PHP+JS实现搜索自动提示(实例)
Jun 09 PHP
php生成excel列序号代码实例
Dec 24 PHP
让CodeIgniter数据库缓存自动过期的处理的方法
Jun 12 PHP
php实现获取文章内容第一张图片的方法
Nov 04 PHP
深入理解PHP内核(一)
Nov 10 PHP
PHP会员找回密码功能的简单实现
Sep 05 PHP
PHP读MYSQL中文乱码的快速解决方法
Oct 01 PHP
thinkPHP框架实现图像裁剪、缩放、加水印的方法
Mar 14 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
Dec 18 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
提取HTML标签
2006/10/09 PHP
基于数据库的在线人数,日访问量等统计
2006/10/09 PHP
OAuth认证协议中的HMACSHA1加密算法(实例)
2017/10/25 PHP
PHP实现的ID混淆算法类与用法示例
2018/08/10 PHP
PHP基于swoole多进程操作示例
2019/08/12 PHP
js select常用操作控制代码
2010/03/16 Javascript
js图片自动切换效果处理代码
2013/05/07 Javascript
js之onload事件的一点使用心得
2013/08/14 Javascript
javascript实现密码强度显示
2015/03/18 Javascript
js实现拉幕效果的广告代码
2015/09/02 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
2015/12/01 Javascript
原生js页面滚动延迟加载图片
2015/12/20 Javascript
动态设置form表单的action属性的值的简单方法
2016/05/25 Javascript
微信小程序技巧之show内容展示,上传文件编码问题
2017/01/23 Javascript
angularjs封装$http为factory的方法
2017/05/18 Javascript
详解Angular 4.x NgIf 的用法
2017/05/22 Javascript
js表单序列化判断空值的实例
2017/09/22 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
2018/04/01 Javascript
vue项目如何刷新当前页面的方法
2018/05/18 Javascript
详解React 服务端渲染方案完美的解决方案
2018/12/14 Javascript
微信小程序生成分享海报方法(附带二维码生成)
2019/03/29 Javascript
编写Python脚本批量下载DesktopNexus壁纸的教程
2015/05/06 Python
python的多重继承的理解
2017/08/06 Python
python查询mysql,返回json的实例
2018/03/26 Python
解决pandas使用read_csv()读取文件遇到的问题
2018/06/15 Python
Python后台管理员管理前台会员信息的讲解
2019/01/28 Python
简单了解django索引的相关知识
2019/07/17 Python
Python新手学习装饰器
2020/06/04 Python
SheIn俄罗斯:时尚女装网上商店
2017/02/28 全球购物
亚洲领先的旅游体验市场:Voyagin
2019/11/23 全球购物
size?法国官网:英国伦敦的球鞋精品店
2020/03/15 全球购物
升旗仪式演讲稿
2014/05/08 职场文书
公司领导班子召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
幼儿园毕业典礼家长致辞
2015/07/29 职场文书
python机器学习创建基于规则聊天机器人过程示例详解
2021/11/02 Python
python中pycryto实现数据加密
2022/04/29 Python