PHP中3種生成XML文件方法的速度效率比較
有3種方法,分別是直接寫(xiě);使用DomDocument;使用SimpleXML;
其實(shí)還有第4種:使用XMLWriter,不過(guò)我沒(méi)用過(guò),也懶得試了.
主要是想看看這3種方式哪個(gè)速度要快些
直接上代碼:
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){
// 創(chuàng)建一個(gè)XML文檔并設(shè)置XML版本和編碼。。
$dom=new DomDocument('1.0', 'utf-8');
// 創(chuàng)建根節(jié)點(diǎn)
$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){
// 創(chuàng)建一個(gè)XML文檔并設(shè)置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(); ;
}
調(diào)用時(shí)每個(gè)都加上大數(shù)循環(huán)操作,并記錄時(shí)間
$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','直接寫(xiě)');
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;
實(shí)測(cè)結(jié)果不出所料,直接寫(xiě)最快,耗時(shí)只有其他方式的1/3左右. 而其他2種方法差不多,相比之下SimpleXML要快一些.
相關(guān)文章
詳解WordPress中簡(jiǎn)碼格式標(biāo)簽編寫(xiě)的基本方法
這篇文章主要介紹了詳解WordPress中簡(jiǎn)碼格式標(biāo)簽編寫(xiě)的基本方法,文中講到了添加和移除簡(jiǎn)碼等的一些PHP函數(shù)的用法,需要的朋友可以參考下2015-12-12Laravel實(shí)現(xiàn)隊(duì)列的示例代碼
這篇文章主要為大家詳細(xì)介紹了Laravel實(shí)現(xiàn)隊(duì)列的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)和借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)游戲2023-02-02php中通過(guò)數(shù)組進(jìn)行高效隨機(jī)抽取指定條記錄的算法
php使用數(shù)組array_rand()函數(shù)進(jìn)行高效隨機(jī)抽取指定條數(shù)的記錄,可以隨機(jī)抽取數(shù)據(jù)庫(kù)中的記錄,適合進(jìn)行隨機(jī)展示和抽獎(jiǎng)程序2013-09-09PHP中如何使用Redis接管文件存儲(chǔ)Session詳解
這篇文章主要給大家介紹了關(guān)于在PHP中如何使用Redis接管文件存儲(chǔ)Session的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11php中l(wèi)trim()、rtrim()與trim()刪除字符空格實(shí)例
這篇文章主要介紹了php中l(wèi)trim()、rtrim()與trim()刪除字符空格的方法.以實(shí)例形式分別講述了ltrim()、rtrim()與trim()的具體用法,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-11-11PHP訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)集群的方法小結(jié)
這篇文章主要介紹了PHP訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)集群的方法,結(jié)合實(shí)例形式總結(jié)分析了三種常見(jiàn)的PHP訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)集群的技巧,需要的朋友可以參考下2016-03-03PHP 文件寫(xiě)入和讀取操作實(shí)例詳解【必看篇】
這篇文章主要介紹了PHP 文件寫(xiě)入和讀取操作,結(jié)合實(shí)例形式詳細(xì)分析了PHP針對(duì)文件的打開(kāi)、讀取、寫(xiě)入及指針操作相關(guān)使用技巧,需要的朋友可以參考下2019-11-11PHP中static關(guān)鍵字原理的學(xué)習(xí)研究分析
PHP中static關(guān)鍵字原理的學(xué)習(xí)研究分析,學(xué)習(xí)php的朋友可以參考下。2011-07-07