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ı.
İ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: Apache AXIOM, Benchmark, Parser, XML
