# Performance beim Binding



## mische (12. Jan 2008)

Hallo,
ich habe ein Problem. Ich habe eine riesige XML-Datei. An der kann ich auch nix ändern. Nun möchte ich diese einlesen und in entsprechende Java-Objekte überführen. Bisher hatte ich es vor die Daten mit StAX zu lesen und in die POJOs zu packen. Nun habe ich aber gehört, dass es auch mit JAXB, dom4j oder JiBX gut bzw. teilweise auch automatisch gehen soll. Nun ist meine Frage, wie sieht es mit der Performance aus? Bisher konnte ich nur Vergleiche finden, die ein paar Jahre alt sind. Wobei mich nur die Geschwindigkeit des Ladens interessiert, also wie lange es dauert, die Daten in die Objekte zu bringen. Wie viel Speicher verbraucht wird, ist für mich eigentlich uninteressant. 
Hat jemand Erfahrungswerte oder weiß wo ich mehr Informationen bekommen kann?


Gruß
Wolle


----------



## jze (14. Jan 2008)

> Ich habe eine riesige XML-Datei. An der kann ich auch nix ändern. Nun möchte ich diese einlesen und in entsprechende Java-Objekte überführen. Bisher hatte ich es vor die Daten mit StAX zu lesen und in die POJOs zu packen.


Der Weg über einen eventbasierten Parser (SAX oder StAX) ist bei großen XML-Dokumenten der beste Weg.



> Nun habe ich aber gehört, dass es auch mit JAXB, dom4j oder JiBX gut bzw. teilweise auch automatisch gehen soll. Nun ist meine Frage, wie sieht es mit der Performance aus?


Bei einem baumbasierten Ansatz ist der Speicherverbrauch ist zwischen Faktor 10 und 100 größer (aber der ist für Dich ja nicht so relevant). Nun aber zur Zeit: nachdem der Baum im Speicher aufgebaut wurde, mußt Du Dir ja noch die interessanten Knoten heraussuchen - das dauert natürlich, insbesondere wenn Du es bequem mit XPATH machst. Ein ganz großer Nachteil der baumbasierten Verarbeitung ist es, daß die Objekte erst zur Verfügung stehen, wenn das gesamte Dokumente eingelesen wurde. Sonst kommst Du sofort an jeden Teil des Dokuments ran. Allerdings weiß ich nicht, ob das bei Dir interessant ist.

Gruß
Jesper[/quote]


----------



## mische (5. Mrz 2008)

Hallo,

danke für deine Hilfe.

Ich habe jetzt etwas experimentiert und bin zu folgenden Schluß gekommen:
Die Baum basierten Ansätze waren zu langsam.
StaX und SAX waren okay. 
JAXB konnte ich nicht verwenden, da ich ein flaches Binding machen muss und ich nix dazu gefunden habe.
JiBX war bisher am schnellsten.

Der größte Vorteil von JiBX war, dass ich kaum Quelltext schreiben musste und ich viel schneller zum Erfolg kam.


gruß


----------

