4

みんなどう思いますか?私は現在、プロジェクト全体でSimpleXMLを使用しています。これは、実行ごとに500マイクロ秒の処理で平均250KBのメモリ使用量があります。XMLParserに切り替える予定です。アドバイスをいただければ幸いです。

編集:実際のマイクロ時間は0.000578マイクロ秒です。私はミリとマイクロで混乱しています、笑。

4

3 に答える 3

16

少なくとも理論的には、XMLParserSAX実装)DOM実装)よりも効率的(速度的に、特にメモリ的に)になる可能性があります。特に、より大きなドキュメントを処理する場合(DOM実装はXMLツリー全体をメモリにロードします。リソースに負担をかける可能性がありますが、SAX実装では、プログラマーは必ずしもメモリに何も格納せずにXMLを単純にトラバースでき、メモリに保持したいものを完全にあなたに任せます)-さまざまなDOMをさまざまなものと比較するベンチマークを参照してくださいSAXパーサーの実装。SimpleXML

SAXトラバーサルの実行は、DOMのトラバースやクエリよりもプログラム的に複雑であり、SAXの使用が不十分である(または、SAXトラバーサルの最後に終了した場合など、DOMの方が適している状況でのSAXの使用)ためです。事実上ツリー全体をメモリにロードすると、実際にはDOMAPIを使用するよりもパフォーマンスが低下する可能性があります。

于 2010-04-09T00:17:34.037 に答える
4

はい。メモリに懸念がある場合は、 XMLパーサー( XMLParserと混同しないでください)をお勧めします。これは、使用前にファイル全体を事前にロードして事前に解析する必要がないためです。file_get_contents()と比較すると、fgets()やfread()に似ています

于 2010-04-09T00:19:40.497 に答える
4

ほとんどの場合、XMLパーサーは、開発と実行の両方の点ではるかに遅くなります。これは主に、ドキュメントをナビゲート/読み取るために大量のユーザーランドPHPコードを記述/実行する必要があるためです。

場合によっては、XMLReader(XMLパーサーについてはよくわかりません)を使用していくつかの改善を見つけることができますが、コストは余分な開発時間とより困難なメンテナンスです。アプリケーションはすでにSimpleXMLを使用しており、250 KBしか使用していないため、アプリケーションの他の領域により多くの時間を費やすことができます。SimpleXMLを使用した一部のXML処理では500ミリ秒はかなり長いようです。最適化のために、それをプロファイリングするか、CPUを最も集中的に使用するルーチンを別の質問に投稿する必要があります。

于 2010-04-09T11:33:12.530 に答える