SORU
26 EYLÜL 2011, PAZARTESİ


Harika XmlSlurper vs XmlParser

Bu konu hakkında biraz araştırdım ve bazı sonuçlar yazının sonunda söz ediyorum da bulundu. Biri bana tam olarak bu durumlarda onları Aşağıda listelenen bu üç soruya cevap yardımcı olabilir?

  1. Hangi durumlarda kullanmak XmlSluper yapar XmlParser ve tersi daha mantıklı (bakış açısından API/Sözdizimi, kullanım kolaylığı) kullanarak?

  2. Hangisi daha hızlı? (Slurper gibi görünüyor)

  3. hangisi xml daha hızlı işler?

Bir vaka. ben xml neredeyse tüm düğümleri okumak zorunda mı?

Durum b. ben sadece birkaç düğümleri (gpath ifade kullanma gibi) okumak zorunda mı?

Dava c. güncelleme yapmam gerekiyor/xml dönüştürmek?

sağlanan xml belgeyi önemsiz bir (derinlikleri ve xml boyutu seviyede değil.

Kaynaklar:

http://www.tutkiun.com/2009/10/xmlparser-and-xmlslurper.html devletler :

XMLParser ve XMLSlurper arasındaki fark:

Kullanıldığında XMLParser ve XMLSlurper arasında benzerlikler var ileri okuma için onları kullanırız ve zaman zaman basit okuma ama işleme XML farklılıklar vardır diğer biçimlerdeki belgeleri iki arasında.

XMLParser belgeleri ayrıştırma sonra Ara sonuçları depolar. Ama öte yandan

XMLSlurper XML işleme sonra iç sonuçları saklar vermez belgeler.

Temel farklar belirgin hale ne zaman gerçek işleme bilgi ayrıştırılır. O yerinde doğrudan veri ile işleme. akış bir senaryoda işleme ve işleme.

http://groovy.dzone.com/news/john-wilson-groovy-and-xml

Havalı doktor (XmlParser, XmlSlurper) ve harika site açıklar onları iyi (here here)ama değil işimizi iyi anlatan söz konusu soru.

CEVAP
1 EKİM 2011, CUMARTESİ


XmlSlurper ve XmlParser arasında büyük fark Ayrıştırıcı bir şey bir DOM benzer yaratacak, Slurper Eğer gerçekten gerekirse sadece yapıları oluşturmak için çalışır ve böylece yolları kullanır iken, o tembel değerlendirilir. Kullanıcı için de son derece eşit bakabilirsiniz. Fark ayrıştırıcı yapısı sadece bir kez, yollar talep değerlendirilecek, slurper değerlendirilir. Talep "daha etkin bellek ama yavaş? al olarak okunabilir Ultimatively kaç istekleri/değişir. Eğer sizin için örnek istiyorum sadece bilmek değeri bir öznitelik belirli bir kısmını XML ve o zaman artık bitsin, XmlParser hala süreci ve yürütmek sorgunuza yarı DOM. Bu nesneleri bir sürü oluşturulur, bellek ve CPU harcama. XmlSlurper nesneleri oluşturma, bellek ve CPU böylece tasarruf olmaz. Eğer Belgenin tüm bölümleri neyse ihtiyacın olursa, slurper çözümleyici olarak en az sayıda nesne oluşturur beri avantajını kaybeder,.

Her iki belge üzerinde dönüşümler yapabilir, ama slurper sabit olduğu varsayılır ve böylece ilk değişiklikleri yazmak ve yeni xml okumak için yeni bir slurper oluşturmanız gerekir. Çözümleyici hemen değişiklikleri görmek destekler.

Böylece (1), kullanma durumu sorunun cevabı, eğer tüm XML işlemek için varsa çözümleyici kullanan, slurper eğer sadece bir bölümü olacaktır. API ve sözdizimi pek rolü yok. Harika insanlar şu iki kullanıcı deneyimi ile çok benzer yapmaya çalışın. Ayrıca eğer XML için artımlı değişiklikler yapmak istiyorsanız slurper üzerinde çözümleyici tercih ederdim.

Bu intro yukarıda da daha fazla bellek verimli, soru (2) sonra açıklıyor. Bu slurper, her neyse okuduğunuz sürece, sonra da çözümleyici olabilir, ama aradaki fark, o zaman nasıl hakkında gerçek sayılar yok.

(3) Ayrıca, soru intro tarafından cevaplanabilir. Eğer birden çok tembel değerlendirdi yolları varsa, yeniden değerlendirme için bu çözümleyici gibi sadece varolan bir grafik giderseniz daha yavaş olabilir. Ayrıştırıcı daha hızlı kullanılmasına bağlı olabilir.

(3a) neredeyse tüm düğümler okuma derim o zaman istekleri daha belirleyici faktör olduğu fark çok değil kendisi yapar. Ama eğer olursa (3b) diyebilirim ki bu slurper daha hızlı eğer sadece okumak için bir kaç düğüm beri zorunda kalmazsınız oluşturmak tam bir yapıda bellek, kendisi zaten maliyeti zaman ve bellek.

(3c) olarak.../daha hızlı olan XML, güncelleme dönüştürebilirsiniz, hem de bu gün aslında daha kaç tane değiştirmek zorunda bağlıdır. Eğer birçok yerinde ben çözümleyici söyleyebilirim eğer değilse, o zaman slurper belki. Ama isterseniz, örneğin, bir öznitelik değeri "Fred", "John" ile slurper, daha sonra sorgu için "John" kullanarak aynı slurper, işe yaramayacak.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bryan Smith

    Bryan Smith

    12 Mart 2006
  • Derek Banas

    Derek Banas

    12 AĞUSTOS 2008
  • jbignacio

    jbignacio

    13 Mart 2006