PHPを使用して大きなXMLファイル(Excel .xlsmファイルから抽出)を編集しようとしていますが、(パフォーマンスに関して)どちらが最適か疑問に思っていました:QueryPathまたはPHPのDOMDocument?
ファイルの重さは少なくとも8MBで、約400k行(フォーマットされている場合)が含まれています。
フィードバックをお寄せいただきありがとうございます
PHPを使用して大きなXMLファイル(Excel .xlsmファイルから抽出)を編集しようとしていますが、(パフォーマンスに関して)どちらが最適か疑問に思っていました:QueryPathまたはPHPのDOMDocument?
ファイルの重さは少なくとも8MBで、約400k行(フォーマットされている場合)が含まれています。
フィードバックをお寄せいただきありがとうございます
QueryPath は基本的に単なるラッパーDOMDocument
です。DOMDocument
ベアオブジェクトに追加されるオーバーヘッドは比較的わずかです。attr()
、 、などの操作へのアクセスと書き込みについてappend()
は、注目に値するパフォーマンスの違いはないはずです。
しかし、ここで大きな問題が発生します。それは、物を見つけることです。
伝統的に、 a のトラバースDOMDocument
は、「ツリーを歩く」か、 を使用して行われますDOMNode->getElementsByTagname()
。コードを書いても構わないと思っている場合、これは比較的うまくいきます。
QueryPath 2.x でのクエリは、非常に特殊なセレクター (例: ':root>foo>bar>baz') を使用しない限り、そのサイズのドキュメントではかなり遅くなります。
ただし、Alpha1 に移行しようとしている QueryPath 3.x は、大きなオブジェクトをクエリする場合、何倍も高速です。実行はXPathqp('foo')
と同じくらい高速です...これが最後の選択肢になります。
次に、組み込みの XPath プロセッサがあり、これには PHP の libxml サポートも付属しています。PHP の速度ではなく C の速度で実行されるため、大規模な XML ドキュメントを処理している場合は、パフォーマンスが向上する可能性があります。ただし、XPath 式を作成する必要がありますが、これは (IMHO) ある種の苦痛です。
つまり、結論は次のとおりです。