1

XMLReaderを使用して、読み取り元のレベルで約100万個の要素を含む大きなXMLファイルを読み取ります。XMLReader::next ([ string $localname ] )ただし、またはを使用して要素500.000にジャンプすると、10秒以上かかると計算しました。XMLReader::read ( void )

これはあまり使い勝手が良くありません。これを行うためのより速い方法はありますか?

4

2 に答える 2

1

これを行うための迅速な方法はありません。XMLはランダムアクセスに対して本質的に低速であり、それを回避する方法はありません。

正しいことは、アルゴリズムについて考え、このようにデータを処理する理由を決定することです。ある要素から次の子または兄弟要素に移動するのは、安価で高速です。アルゴリズムがXMLファイルを1回だけ調べる必要がある限り、多くのオーバーヘッドは発生しません。ただし、構造内の任意の場所で、順序が正しくない要素にアクセスしようとしているようです。どんなリーダーを使おうと、糖蜜のように遅くなります。

于 2010-04-15T00:52:20.233 に答える
0

データベースの変更を許可していますか?可能であれば、タグを追加してから、ReadToFollowingを使用してポイントにジャンプします。

于 2013-02-12T15:41:20.950 に答える