ホームページ  >  記事  >  バックエンド開発  >  PHPでXMLファイルを生成する3つの方法の効率比較

PHPでXMLファイルを生成する3つの方法の効率比較

WBOY
WBOYオリジナル
2016-07-25 09:08:15948ブラウズ
  1. プライベート関数 directWriteXml(&$data){
  2. $xmltext='';
  3. $xmltext .= '';
  4. $xmltext .='';
  5. $loop=count($data);
  6. foreach ($data as $d){
  7. $xmltext .=" ";
  8. }
  9. $xmltext .='';
  10. $xmltext .=' ';
  11. return $xmltext;
  12. }
  13. private function useDomDocument(&$data){
  14. // XML ドキュメントを作成し、XML バージョンとエンコーディングを設定します。 。
  15. $dom=new DomDocument('1.0', 'utf-8');
  16. // ルートノードを作成
  17. $detail01 = $dom->createElement('Detail');
  18. $dom->appendchild($detail01 );
  19. foreach ($data as $d) {
  20. $row = $dom->createElement('Row'," ID=" {$d['id']} " Name=" {$d['name ']}" " );
  21. $detail01->appendchild($row);
  22. }
  23. return $dom->saveXML();
  24. }
  25. private function useSimpleXML(&$data){
  26. // XML を作成するXML のバージョンとエンコーディングを文書化して設定します。 。
  27. $string = <<&XML
  28. XML;
  29. $xml = simplexml_load_string ($string);
  30. foreach ($data as $d) {
  31. $xml->addChild('Row'," ID=" {$d['id']} " Name=" {$d['name ']}" " );
  32. }
  33. return $xml->asXML(); ;
  34. }
  35. ?>
コードをコピー

呼び出し時に、それぞれに多数のループ操作を追加します。時間を記録します。

  1. $loop=10000;
  2. $xml='';
  3. switch($_GET['id']){
  4. case 1:
  5. $ts=$this->microtime_float( );
  6. for( $i=0; $i$xml=$this->gt;directWriteXml($depdata);
  7. $te=$this->microtime_float();
  8. $t =$te-$ts;
  9. $this->assign('times',$t);
  10. $this->assign('メソッド','直接書き込む');
  11. break;
  12. ケース 2:
  13. $ ts=$this->microtime_float();
  14. for( $i=0; $i<$loop; $i++)
  15. $xml=$this->useDomDocument($depdata);
  16. $te=$this- >microtime_float();
  17. $t=$te-$ts;
  18. $this->assign('times',$t);
  19. $this->assign('method','DomDocument');
  20. Break;
  21. ケース 3:
  22. $ts=$this->microtime_float();
  23. for( $i=0; $i$xml=$this->useSimpleXML($depdata) ;
  24. $te=$this->microtime_float();
  25. $t=$te-$ts;
  26. $this->assign('times',$t);
  27. $this->assign('メソッド','SimpleXML');
  28. break;
  29. }
  30. echo $xml;
  31. ?>
コードをコピー

実際のテスト結果: 直接書き込みが最も速く、消費時間はわずか約 1/ 3 他の方法。他の 2 つのメソッドはほぼ同じであり、比較すると SimpleXML の方が高速です。



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。