2010-12-05 15 views
1

Was ist schneller und besser in der Leistung?Lesen von XML vs Lesen der CSV-Datei java

XML mit DocumentBuilder oder CSV mit FileReader/BufferReader in Java lesen?

+5

Das ist eine sehr weit gefasste Frage - die Antwort hängt von vielen Faktoren ab, wie der Größe des Dokuments und der Art der Verarbeitung, die Sie versuchen zu machen. Kannst du etwas genauer erklären, welches Problem du lösen willst? –

+0

Es ist kein Problem.Nehmen wir an, wir haben das gleiche Dokument, das in XML oder CSV geschrieben werden kann. Was ist der bessere Weg, damit unsere Anwendung es lesen kann? – Dejell

Antwort

1

Ich stimme sowohl mit Fehlern und Duffymo. Ich wollte nur folgendes hinzufügen.

Wie bereits erwähnt, sind beide das Datenformat, also denken Sie über Ihre Daten nach. Wie groß und wie kompliziert ist es? Wenn es hierarchisch ist, vergessen Sie CSV. Wenn es nicht sehr groß ist, mach dasselbe.

Denken Sie an XML, denken Sie daran, dass DOM nicht die einzige Möglichkeit ist, es zu parsen. SAX ist schneller. Und Sie können Digester (auf SAX basierend) verwenden, mit dem Sie die Zuordnung zwischen Ihrem Datenmodell und dem XML-Schema mithilfe von XML definieren und dann sehr schnell ausführen können.

Wenn Ihre Daten sehr groß sind und Ihr Parser sehr schnell sein muss, überprüfen Sie JSON. Es sollte schneller als XML sein, da es weniger ausführlich ist.

1

Ich weiß nicht über die Leistung, aber ein Faktor ist die Leichtigkeit der Suche nach Standard, gut verwendete Parser. Es gibt jetzt einen XML-Parser, der in das JDK integriert ist, mir ist jedoch kein CSV-Parser bekannt. Ich denke, XML ist viel ubiquitärer als CSV.

Ein weiterer Faktor ist die Art der Daten: XML schlägt hierarchisch vor, während CSV Tabellen vorschlägt. Ich denke, die "beste" Art, Daten einzulesen, hängt mehr von so etwas ab.

1

Während ich nicht zu schneller Builds und einfacher Wartung sprechen kann, noch Leistung; obwohl ich denke, es hängt wirklich davon ab, wie Sie die Dokumente verwenden, die analysiert werden; z.B. Lesen von Dokumentknoten wäre viel schneller als CSV, das Laden eines Dokuments könnte in CSV schneller sein. Alles in allem ist CSV böse, was bedeutet, dass es sich um einen sehr instabilen Datenspeicher handelt. XML hat mehr Overhead, ist aber viel stabiler.

RELATED_QUESTION:When and Why is XML preferable to CSV?

1

ein CSV-Datei Lesung mit der FileReader Klasse schneller ist als der Leser nur die Datei liest und die Analyse des Wertes ist ein ganz einfacher Schritt hier.

Auf der anderen Seite, eine XML-Datei zu lesen unter Verwendung eines DOMReader oder SAXParser (Sie lesen die Builder-Klasse Dokumente nicht verwenden, wird es verwendet, um XML-Dokumente zu erstellen, soweit ich weiß) ist langsamer, da die Verarbeitung von XML Daten sind ein viel komplizierterer Schritt. XML-Dateien sind in der Regel sehr ausführlich. Der Vorteil der XML-Datei besteht darin, dass Sie der Datenüberprüfung (bei Verwendung von XSD für die XML-Strukturdefinition) mehr Stress auferlegen können, d. H. Die Werte beim Lesen der Datei auf Korrektheit testen. Auch kann man die XML-Datei ohne weitere Erklärungen bearbeiten, da die XML-Elementnamen (und mögliche Kommentare) mehr als Semikolons in der CSV-Datei sagen.

1

Ich habe das gleiche gefragt. Ich habe gerade einen groben Test mit Excel durchgeführt, um eine einfache Datei mit 8.000 Datensätzen zu lesen und zu parsen. Die XML-Belastung dauerte ~ 8 Sekunden. Die CSV-Belastung dauerte weniger als 1 Sekunde.

Ich denke, dass CSV eine vollkommen gültige Wahl für einfache Tabellendaten ist, und viel weniger überholt ist. XML ist GROSS, für komplexere Szenarien ...