PHP中3种生成XML文件方法的速度比较
有3种方法,分别是直接写;使用DomDocument;使用SimpleXML;
其实还有第4种:使用XMLWriter,不过我没用过,也懒得试了.
主要是想看看这3种方式哪个速度要快些
直接上代码:
private function directWriteXml(&$data){<BR> $xmltext='<?xml version="1.0" encoding="UTF-8" ?>';<BR> $xmltext .='';<BR> $xmltext .='';<BR> $loop=count($data);<BR> foreach ($data as $d){<BR> $xmltext .=" ";<BR> }<BR> $xmltext .='';<BR> $xmltext .='';<BR> return $xmltext;<BR> }<BR> private function useDomDocument(&$data){<BR> // 创建一个XML文档并设置XML版本和编码。。<BR> $dom=new DomDocument('1.0', 'utf-8');<BR> // 创建根节点<BR> $detail01 = $dom->createElement('Detail');<BR> $dom->appendchild($detail01);<BR> foreach ($data as $d) {<BR> $row = $dom->createElement('Row'," ID=\" {$d['id']} \" Name=\" {$d['name']}\" " );<BR> $detail01->appendchild($row);<BR> }<BR> return $dom->saveXML();<BR> }<BR> private function useSimpleXML(&$data){<BR> // 创建一个XML文档并设置XML版本和编码。。<BR> $string = <<<XML<BR><?xml version='1.0' encoding='utf-8'?><BR><BR><BR>XML;<BR> $xml = simplexml_load_string($string);<BR> foreach ($data as $d) {<BR> $xml->addChild('Row'," ID=\" {$d['id']} \" Name=\" {$d['name']}\" " );<BR> }<BR> return $xml->asXML(); ;<BR> }<BR>
调用时每个都加上大数循环操作,并记录时间
$loop=10000;<BR> $xml='';<BR> switch($_GET['id']){<BR> case 1:<BR> $ts=$this->microtime_float();<BR> for( $i=0; $i<$loop; $i++)<BR> $xml=$this->directWriteXml($depdata);<BR> $te=$this->microtime_float();<BR> $t=$te-$ts;<BR> $this->assign('times',$t);<BR> $this->assign('method','直接写');<BR> break;<BR> case 2:<BR> $ts=$this->microtime_float();<BR> for( $i=0; $i<$loop; $i++)<BR> $xml=$this->useDomDocument($depdata);<BR> $te=$this->microtime_float();<BR> $t=$te-$ts;<BR> $this->assign('times',$t);<BR> $this->assign('method','DomDocument');<BR> break;<BR> case 3:<BR> $ts=$this->micro<strong style="color:transparent">本&文来源gao@daima#com搞(%代@#码网@</strong><textarea>搞gaodaima代码</textarea>time_float();<BR> for( $i=0; $i<$loop; $i++)<BR> $xml=$this->useSimpleXML($depdata);<BR> $te=$this->microtime_float();<BR> $t=$te-$ts;<BR> $this->assign('times',$t);<BR> $this->assign('method','SimpleXML');<BR> break;<BR> }<BR> echo $xml;<BR>
实测结果不出所料,直接写最快,耗时只有其他方式的1/3左右. 而其他2种方法差不多,相比之下SimpleXML要快一些.