# Performance von Sax vs. DOM



## foobar (11. Jun 2005)

Hi,

kann mir jemand sagen, inwieweit sich die Verwendung von Sax gegenüber DOM positiv auf die Performance auswirkt?
Gibt es vielleicht einen Vergleich der beiden APIs in Bezug auf Ressourcenverbrauch respektive Verarbeitungsgeschwindigkeit?
Sind die Unterschiede überhaupt so groß, daß man beim parsen eines 5 seitigen Dokuments einen Unterschied merkt?

Gruß foobar


----------



## Roar (11. Jun 2005)

sax ist schneller, da dom 1. zeit braucht um dem baum zu generieren und 2. viel speicher für den baum braucht (viele objekte).
ich habs bei mir so gelöst, dass ich mir meinen eigenen kleinen dom baum baue (mit eigenen klassen). ob das jetz schneller is weiß ich auch nich *g
was wilslt du denn machen? welche api am besten ist, kommt imerm auf den zweck drauf an :S


----------



## Bleiglanz (11. Jun 2005)

zahlen hab ich nicht verfügbar, der geschwindigkeitsgewinn sollte aber bei grösseren dokumenten schon deutlich sichtbar sein

(die meisten dom implementierungen bauen ja ihren baum mit hilfe eines sax-parsers auf!)

bei 5 seiten ists aber wahrscheinlich egal (wenn du das nur einmal im programm machst)

http://java.sun.com/developer/technicalArticles/xml/JavaTechandXML_part2/


----------



## foobar (11. Jun 2005)

Ich will ein komplettes Dokument einmal parsen und dann daraus Objekte bauen um später mit diesen Objekten arbeiten zu können. 



> ich habs bei mir so gelöst, dass ich mir meinen eigenen kleinen dom baum baue (mit eigenen klassen). ob das jetz schneller is weiß ich auch nich *g


Genau sowas habe ich mir auch überlegt 



> bei 5 seiten ists aber wahrscheinlich egal (wenn du das nur einmal im programm machst)


Das befürchte ich auch.

Ich bin nicht sicher ob sich dann der ganze Mehraufwand lohnt, SAX anstatt DOM zu verwenden, wenn die Performanceunterschiede bei Dokumenten bis ca. 5 Seiten marginal sind. Denn das parsen eines kompletten Dokuments und das erstellen eines Objekt-Baumes ist mit DOM wesentlich leichter realisierbar, als mit SAX.


----------



## Bleiglanz (11. Jun 2005)

noch leichter ist das ganze mit JAXB oder Castor XML

wenn du eine DTD oder ein Schema hast (ist meistens schnell hingeschrieben), dann generieren dir diese Tools die Klassen und kümmern sich um das konvertieren in XML (unter der haube wird natürlich mit SAX geparst...)


----------



## Roar (11. Jun 2005)

foobar hat gesagt.:
			
		

> > ich habs bei mir so gelöst, dass ich mir meinen eigenen kleinen dom baum baue (mit eigenen klassen). ob das jetz schneller is weiß ich auch nich *g
> 
> 
> Genau sowas habe ich mir auch überlegt



ja, aber die klassen stellen auch nur Elemente, Dokumente, Attribute etc. dar, also nix um die daten zu verarbeiten...


----------

