Entwickler-Ecke
Dateizugriff - XML und die Geschwindigkeit
gala - Do 15.05.03 13:29
Titel: XML und die Geschwindigkeit
Hallo Leute,
ich habe eine kleine Methode geschrieben, wo ich die XML-Datei auslese. Zuerst habe ich mit kleineren Dateien probiert und es ging sehr schnell. Jetzt verwende ich 7 MB-datei und was ist passiert?! Mein Gott, um ein einzelner Eitrag zu lesen, braucht mann mehrere Minuten. Ich verstehe das nicht. Ist das wegen Delphi, oder vielleicht XML? Oder mache ich irgendwas falsch?
Hier ist die Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.Button1Click(Sender: TObject); var myFirstXML : IXMLDocument; i,j : Integer; f: TextFile; g: String; begin myFirstXML := newXMLDocument; myFirstXML.LoadFromFile('D:/input_mainplan.xml'); AssignFile(f, 'C:/test.txt'); Append(f); for i := 0 to myFirstXML.DocumentElement.ChildNodes.Count -1 do for j := 0 to myFirstXML.DocumentElement.ChildNodes[i].ChildNodes.Count -1 do Writeln(f, myFirstXML.DocumentElement.ChildNodes[i].ChildNodes[j].Attributes['KO_NAME']); Flush(f); CloseFile(f); end; |
Danke im Voraus
gala
Moderiert von
tommie-lie: Delphi-Tags hinzugefügt
MSCH - Do 15.05.03 18:48
Hi,
XML hat einen Nachteil, da es von hause aus nicht "indiziert" ist, also quasi sequentiell aufgebaut ist (siehe deine For-Schleifen), muss die gesamte Datei geparst und "abgerannt" werden. Noch schlimmer wirds, wenn eine DTD oder Schema definiert ist.
IMHO gehts nur, wenn die Kiste gut ausgestattet ist (>n GHz, Many moore RAM)
grez.
msch
Delete - Do 15.05.03 19:40
Beim MS-XML-Parser gibt es die Möglichkeit, alle Nodes, die z.B. über das gesuchte Attribut "KO_NAME" verfügen in eine so genannte NodeList einlesen zu lassen. Diese Liste lässt sich dann mit einer for-Schleife durchgehen und z.B. in eine Textdatei übertragen.
Ich habe es nicht getestet, aber ich könnte mir vorstellen, dass der Schreibzugriff auf die Textdatei schneller geht, wenn der Parser selbst vorher die Knoten aussortiert.
Mal ausprobieren!
Grüße.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!