みんなどう思いますか?私は現在、プロジェクト全体でSimpleXMLを使用しています。これは、実行ごとに500マイクロ秒の処理で平均250KBのメモリ使用量があります。XMLParserに切り替える予定です。アドバイスをいただければ幸いです。
編集:実際のマイクロ時間は0.000578マイクロ秒です。私はミリとマイクロで混乱しています、笑。
みんなどう思いますか?私は現在、プロジェクト全体でSimpleXMLを使用しています。これは、実行ごとに500マイクロ秒の処理で平均250KBのメモリ使用量があります。XMLParserに切り替える予定です。アドバイスをいただければ幸いです。
編集:実際のマイクロ時間は0.000578マイクロ秒です。私はミリとマイクロで混乱しています、笑。
少なくとも理論的には、XMLParser
(SAX実装)は(DOM実装)よりも効率的(速度的に、特にメモリ的に)になる可能性があります。特に、より大きなドキュメントを処理する場合(DOM実装はXMLツリー全体をメモリにロードします。リソースに負担をかける可能性がありますが、SAX実装では、プログラマーは必ずしもメモリに何も格納せずにXMLを単純にトラバースでき、メモリに保持したいものを完全にあなたに任せます)-さまざまなDOMをさまざまなものと比較するベンチマークを参照してくださいSAXパーサーの実装。SimpleXML
SAXトラバーサルの実行は、DOMのトラバースやクエリよりもプログラム的に複雑であり、SAXの使用が不十分である(または、SAXトラバーサルの最後に終了した場合など、DOMの方が適している状況でのSAXの使用)ためです。事実上ツリー全体をメモリにロードすると、実際にはDOMAPIを使用するよりもパフォーマンスが低下する可能性があります。
ほとんどの場合、XMLパーサーは、開発と実行の両方の点ではるかに遅くなります。これは主に、ドキュメントをナビゲート/読み取るために大量のユーザーランドPHPコードを記述/実行する必要があるためです。
場合によっては、XMLReader(XMLパーサーについてはよくわかりません)を使用していくつかの改善を見つけることができますが、コストは余分な開発時間とより困難なメンテナンスです。アプリケーションはすでにSimpleXMLを使用しており、250 KBしか使用していないため、アプリケーションの他の領域により多くの時間を費やすことができます。SimpleXMLを使用した一部のXML処理では500ミリ秒はかなり長いようです。最適化のために、それをプロファイリングするか、CPUを最も集中的に使用するルーチンを別の質問に投稿する必要があります。