Cumartesi, Mayıs 19, 2007

Apache AXIOM

Geçenlerde XML Parser Benchmarks: Part 1 ve XML Parser Benchmarks: Part 2 isiminde iki adet blog yayınlandı. Bu bloglarda dönem dönem yapıldığı gibi gündemdeki bazı yeni XML Parser'lar karşılaştırılmış.

İlk defa bu tip bir benchmark'ta Java ve C kütüphanelerinin birlikte karşılaştırıldığına şahit oldum. Eskiden C ve Java aynı kefeye konmazdı bile. Gerçi bu testlerinin çoğunda da C kütüphanleri bariz bir üstünlük sağlamış ama xml dokümanlarının baştan belli bir kısmına kadar okuma yapıldığı testlerde Apache AXIOM 'un Java versiyonu ciddi bir üstünlük sağlamış.

Hemen aklınıza "Bir xml dokümanının belli bir kısmının okunması ne işimize yarar?" diye bir soru gelebilir. Özellikle web servislerde, xml'in başında, header diye tabir edilen kısımda session, encoding, username, IP, vs. gibi veriler tutulur. Web Servisinizin tamamını okumadan öncelikle sadece session bilgisini kontrol etmek isteyebilirsiniz, ya da web servisle size gelen bir sürü bilgiden sadece bir kısmını okumak isteyebilirsiniz.

Zaten Apache AXIOM ilk başlarda Apache'in meşhur SOAP kütüphanesi olan Axis'in bir alt bileşeni olarak geliştirilmeye başlanmış ve daha sonra ayrı bir proje olarak kendisine bir yer edinmiş. AXIOM'un en güzel tarafı, kullanımının DOM Parser'lar kadar kolay olması ve xml dokümanını sonuna kadar okumadığınız ve harhangi bir güncelleme yapmadığınız sürece diğer DOM parser'lara göre daha hızlı ve az kaynak kullanarak çalışması.
AXIOM is a XML object model by Apache. It was developed for Apache's Web Service Engine AXIS2, but it is pushed forward as a separate project. Currently there exist a Java and a C version of the parser. The Java version uses the Woodstox StAX parser to read in the documents. The C version uses the LIBXML2 stream pull-parser. As already mentioned AXIOM has the advantage of only building the document tree in memory until the last node of which data is needed. This way the whole tree only has to be built when the data in the end of the document is required to be read or altered. The C implementation is currently in version 0.96 and can therefore not be considered as fully stable.


Figure 5: Benchmark results for the reading of only the first 67 elements in large documents

Yukarıdaki grafikte özellike xml dokümanının boyutunun arttıkça AXIOM'un daha iyi bir performans gösterdiği açıkça gözüküyor. Bu arada XML Parser Benchmark' larını yapan arkadaşlar, her nedense StAX Pull Parser testlerine favori Pull Parser'ım XPP3 'ü dahil etmemişler.

XML Teknolojisinin uygulamalardaki ağırlığı arttıkça giderek daha performanslı kütüphanler geliştiriliyor ama ben gene de mecbur kalmadıkça XML'den uzak durmayı tercih ediyorum. En iyi XML, sadece konfigürasyon dosyası olarak kullanılan XML'dir... :)

Etiketler: , , ,

1 Yorum:

Anonymous Adsız dedi ki...

Abi Merhaba;

XML: The Performance Killer yazından sonra bu yazıyı okurken böyle biraz şaşırdım. Dedim yoksa Mustafa Abi XML ci mi oldu ama yazının sonunda yine kendini gösterdin.

Mecbur kalmadıkça XML kullanmayın:)

Sanırım XML biraz pohpohlanan bir teknoloji. Yani sürekli herşeyin içinde XML duyar olduk. Önceden var olan teknolojileri bile XML 'e uyarlama çabası oluştu yada hiç gerek yokken olağanüstü senaryolar uydurulup XML işte buradar kullanılır denmeye başlandı.

Bizzati olarak projemde kullandığım XML DOM parser (kullanımı kolay diye tercih etmiştim hazır hafıza da boldu) proje sunumunda out of memory gibilerinden hatalara neden olunca XML kavramına daha temkinli yaklaşıyorum.

Asıl konuya dönersek Apacahe AXIOM beni büyüledi. Bu şekilde bir performans hele de JAVA versiyonunda beklemiyordum desem yeridir. Sanırım başarının sırrı sıradan bir DOM parser gibi tüm belgeyi memeoryde oluşturduğu ağaç yapısına yerleştirme derdinde OLMAMASI. Ne kadarı lazımsa o kadar kullan mantığı gayet güzel.

Apache bünyesindeki işlere bakınca benim hep olmaz dediklerimi yapıyorlar.Bu kadar optimize olmak daha doğru olabilmek neyi gerektirir çok merak ediyorum? Bilimsellik mi deneyim mi bilgi mi ???

Nedir onların bu derece optimize işler çıkarabilmesindeki etken cidden ???

Kolay gelsin

7:03 ÖS  

Yorum Gönder

Kaydol: Kayıt Yorumları [Atom]

<< Ana Sayfa