XMLReader kullanarak elemanına atlamak için hızlı bir yol var mı?

2 Cevap php

Ben okuyorum düzeyde yaklaşık 1 milyon dolar elemanları ile büyük bir XML dosyasını okumak için XMLReader kullanıyorum. Ancak, ben XMLReader::next ([ string $localname ] ) veya XMLReader::read ( void ) kullanılarak örnek-eleman 500.000 için için-atlamak zaman üzerinde 10 saniye sürer hesapladım

Bu çok kullanışlı değil. Bunu yapmak için daha hızlı bir yolu var mı?

2 Cevap

Bunu yapmak için hızlı bir yol yoktur. XML rastgele girişler için doğal olarak yavaş ve çevresinde hiçbir yolu yoktur.

Yapılacak doğru şey algoritma düşünmek ve bunun gibi verileri ele konum neden karar vermektir. Sonraki çocuk veya kardeş öğesine bir eleman alma ucuz ve hızlı. Sürece algoritması sadece bir kez XML dosya üzerinde gitmek zorunda gibi, çok yormayan gerekir. Eğer yapısında keyfi yerlerde, out-of-sipariş öğeleri erişmeye çalışıyor olabilirsiniz gibi Ancak, bu sesler. Bu olursa olsun kullanmayı deneyin ne okuyucu pekmez gibi yavaş olacaktır.

Eğer veritabanını değiştirmek için izin verir? Eğer yapabilirsen, ben bir etiket eklemek ve daha sonra noktasına atlamak için ReadToFollowing kullanabilirsiniz.