2009-08-28 9 views
5

Bir .NET sınıf yapısına (sabit uzunluklu bir kayıt biçimiyle eşlenecek ve MQ aracılığıyla iletilecek) ayrıştırmam gereken oldukça büyük bir XML dosyası var. Performans önemlidir, ancak kesinlikle kritik değildir.XPathNavigator ve XmlReader arasındaki hız farkı ne kadar büyük?

Neredeyse her zaman XmlReader'dan daha kolay olduğu için XML dosyalarını okumak için XPathNavigator kullanın. Öte yandan, XmlReader'un XPathNavigator'dan daha hızlı olduğunu biliyorum, çünkü teorik olarak bir anda sadece bir düğüm okuyor, oysa XPathNavigator muhtemelen bir belgeyi bir XPath yürütmek için yeterli olmalı.

Sorum şu: Bu ne kadar hızlı? Birkaç bin düğüm okurken fark edilebilir bir fark yaratır mı? XmlReader'a geçmek zorunda olduğum devrilme noktası nedir? Ya da her zaman iyi bir seçenek olduğuna göre optimize edilmiş XPathNavigator mu?

Benim XML deneyimimin çoğu görece küçük dosyalardadır, bu yüzden büyük dosyalarla çalışan herkesin girdisini arıyorum.

cevap

5

XPathNavigator uygulamasının gerçekleştirilebileceği yegane yerin, her ikisi de tüm ağacı bellekte tutan .Xml.Linq.XDocument veya XPathDocument öğesinden aldığının farkında olduğum kadarıyla.

XmlReader, bir ağaç kümesini bir ağaca toplamaya gerek kalmadan bir XML akışını alabilir ve ayrıştırabilir.

Dolayısıyla Büyük veri için daha sonra ileri tek bir şekilde tüm gerekli verileri toplamak varsayarak XmlReader dışarı basitçe temelinde XPathNavigator gerçekleştirmelisiniz setleri olun: -

    Sen akışı deserialise zorunda kalacaktı
  1. XML belgeyi doldurmak için neyse ve
  2. Büyük bir öğe kümesini belleğe yüklemek zorunda kalmazsınız.
İlgili konular