XMLReaderを使用して、読み取り元のレベルで約100万個の要素を含む大きなXMLファイルを読み取ります。XMLReader::next ([ string $localname ] )
ただし、またはを使用して要素500.000にジャンプすると、10秒以上かかると計算しました。XMLReader::read ( void )
これはあまり使い勝手が良くありません。これを行うためのより速い方法はありますか?
XMLReaderを使用して、読み取り元のレベルで約100万個の要素を含む大きなXMLファイルを読み取ります。XMLReader::next ([ string $localname ] )
ただし、またはを使用して要素500.000にジャンプすると、10秒以上かかると計算しました。XMLReader::read ( void )
これはあまり使い勝手が良くありません。これを行うためのより速い方法はありますか?
これを行うための迅速な方法はありません。XMLはランダムアクセスに対して本質的に低速であり、それを回避する方法はありません。
正しいことは、アルゴリズムについて考え、このようにデータを処理する理由を決定することです。ある要素から次の子または兄弟要素に移動するのは、安価で高速です。アルゴリズムがXMLファイルを1回だけ調べる必要がある限り、多くのオーバーヘッドは発生しません。ただし、構造内の任意の場所で、順序が正しくない要素にアクセスしようとしているようです。どんなリーダーを使おうと、糖蜜のように遅くなります。
データベースの変更を許可していますか?可能であれば、タグを追加してから、ReadToFollowingを使用してポイントにジャンプします。