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&amp;MYSQL服务器配置说明
Oct 09 PHP
PHP下10件你也许并不了解的事情
Sep 11 PHP
PHP Pear 安装及使用
Mar 19 PHP
有关php运算符的知识大全
Nov 03 PHP
关于IIS php调用com组件的权限问题
Jan 11 PHP
PHP文件缓存类示例分享
Jan 30 PHP
非集成环境的php运行环境(Apache配置、Mysql)搭建安装图文教程
Apr 12 PHP
Linux环境下php实现给网站截图的方法
May 03 PHP
利用laravel+ajax实现文件上传功能方法示例
Aug 13 PHP
php+redis实现商城秒杀功能
Nov 19 PHP
PHP调用其他文件中的类
Apr 02 PHP
Smarty模板配置实例简析
Jul 20 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 网页游戏开发入门教程一(webgame+design)
2009/10/26 PHP
解决cPanel无法安装php5.2.17
2014/06/22 PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
2016/05/09 PHP
让插入到 innerHTML 中的 script 跑起来的实现代码
2006/07/01 Javascript
用javascript父窗口控制只弹出一个子窗口
2007/04/10 Javascript
Prototype ObjectRange对象学习
2009/07/19 Javascript
javaScript 判断字符串是否为数字的简单方法
2009/07/25 Javascript
document.getElementById为空或不是对象的解决方法
2010/01/24 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/09/26 Javascript
jQuery实现菜单式图片滑动切换
2015/03/14 Javascript
在JavaScript的AngularJS库中进行单元测试的方法
2015/06/23 Javascript
jQuery实现默认是闭合的FAQ展开效果菜单
2015/09/14 Javascript
12种JavaScript常用的MVC框架比较分析
2015/11/16 Javascript
教你如何终止JQUERY的$.AJAX请求
2016/02/23 Javascript
prototype.js常用函数详解
2016/06/18 Javascript
使用vue实现点击按钮滑出面板的实现代码
2017/01/10 Javascript
canvas 绘制圆形时钟
2017/02/22 Javascript
jQuery插件echarts实现的去掉X轴、Y轴和网格线效果示例【附demo源码下载】
2017/03/04 Javascript
Angular 4.x 路由快速入门学习
2017/05/03 Javascript
JavaScript实现无穷滚动加载数据
2017/05/06 Javascript
如何让你的JS代码更好看易读
2017/12/01 Javascript
简单了解node npm cnpm的具体使用方法
2019/02/27 Javascript
Node.js 路由的实现方法
2019/06/05 Javascript
vue实现一个矩形标记区域(rectangle marker)的方法
2020/10/28 Javascript
Python中用pycurl监控http响应时间脚本分享
2015/02/02 Python
Python爬取网易云音乐上评论火爆的歌曲
2017/01/19 Python
详解Python3的TFTP文件传输
2018/06/26 Python
python3.6 tkinter实现屏保小程序
2019/07/30 Python
Django命名URL和反向解析URL实现解析
2019/08/09 Python
python3的pip路径在哪
2020/06/23 Python
综合实践教学反思
2014/01/31 职场文书
《第一朵杏花》教学反思
2014/04/16 职场文书
教师四风问题整改措施
2014/09/25 职场文书
2014年企业员工工作总结
2014/12/09 职场文书
保研推荐信格式
2015/03/25 职场文书
公司员工违法违章行为检讨书
2019/06/24 职场文书