0

PHPを使用して大きなXMLファイル(Excel .xlsmファイルから抽出)を編集しようとしていますが、(パフォーマンスに関して)どちらが最適か疑問に思っていました:QueryPathまたはPHPのDOMDocument?

ファイルの重さは少なくとも8MBで、約400k行(フォーマットされている場合)が含まれています。

フィードバックをお寄せいただきありがとうございます

4

1 に答える 1

2

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) ある種の苦痛です。

つまり、結論は次のとおりです。

  • 基本:どちらでも構いません。
  • 変更: どちらでも構いません。
  • たくさんのトラバース:
    • DOMDocument を使用すると、手動でトラバースする必要があります。
    • QueryPath 2.x は遅い
    • QueryPath 3.x ははるかに高速です
    • XPath は最速ですが、それは XPath です
于 2012-05-23T00:52:52.377 に答える