çok daha hızlı, XMLParser veya SimpleXML

3 Cevap php

Siz ne düşünüyorsunuz? Şu anda yürütme başına 500micro saniye / işleme w bellek kullanımında 250KB ortalamasını var benim tüm proje için SimpleXML kullanarak. Ben sadece XmlParser geçmeyi planlıyoruz, senin tavsiye çok takdir edilmektedir.

Edit: Gerçek microtime 0.000578 mikro saniyedir. Im adil lol, Milli ve mikro karıştı.

3 Cevap

Çoğu durumda, XML Ayrıştırıcı belgenizi okuma / çalıştır / gezinmek için userland PHP kod ton yazmak zorunda başlıca nedeni, hem geliştirme ve yürütme açısından much slower olacaktır.

Bazı durumlarda, XMLReader (XML Ayrıştırıcı hakkında emin değilim) kullanarak bazı iyileşme bulabilirsiniz ama ekstra maliyet geliştirme zamanı ve zor bakımıdır. Uygulama zaten SimpleXML kullanır ve sadece 250 KB kullanır beri, zaman büyük olasılıkla daha iyi uygulama diğer alanlarda harcanacak. 500ms SimpleXML ile bazı XML işleme için, bu profili olmalı ve / veya optimizasyonu için başka bir soru en CPU-yoğun rutin yayınlamak oldukça çok gözüküyor.

En azından teoride, XMLParser (a SAX uygulama) can more efficient (hız-bilge, ama özellikle hafıza-bilge) daha olabilir Daha büyük belgelerin (SAX uygulamaları programcı izin oysa DOM uygulamalar, kaynaklar üzerinde yıpratıcı olabilir, hangi belleğe tüm XML ağaç yüklemek ile ilgili özellikle SimpleXML (a DOM uygulama), sadece tamamen size bırakarak, mutlaka hafızada bir şey saklamak olmadan XML hareket ne bir şey varsa, siz) bellekte tutmak istiyorum - benchmarks, çeşitli SAX çözümleyici uygulamaları için çeşitli DOM karşılaştırarak bakın.

I can söylüyorlar çünkü performing SAX traversal is programatically more complex geçme veya örneğin DOM ve DOM iyi zaten uygun olacaktır durumlarda SAX bir poor use of SAX (veya kullanımını, eğer sorgulama daha Lütfen SAX kastetmek sonunda aslında poorer performance than the use of a DOM API neden olabilir) yourself neredeyse tüm ağaç hafızasına yükleme sona erdi.

Evet, XML Parser bellek endişeniz varsa bunu önceden yüklenmiş ve kullanım öncesi ön ayrıştırılması için tüm dosyayı gerektirmez, çünkü tercih edilir (XMLParser ile karıştırmayın) . Bu file_get_contents karşılaştırıldığında () fgets () veya fread gibi ()