Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   XE4: TXMLDocument.LoadFromFile lädt die komplette Datei? (https://www.delphipraxis.net/183960-xe4-txmldocument-loadfromfile-laedt-die-komplette-datei.html)

hoika 16. Feb 2015 12:29

XE4: TXMLDocument.LoadFromFile lädt die komplette Datei?
 
Hallo#,

aus der Hilfe ist das leider nicht ersichtlich.
Lädt denn LoadFromFile die komplette Datei in den Speicher
oder lädt bei Bedarf nach.
Ich weiss zumindestens, dass intern MSXHL und deshalb auch Interafaces verwendet werden.

Ich habe mal eine Performance-Test NativeXml vs. TXMLDocument.
Bei einer 20 MB grossen Datei brauchte TXMLDocument nur 1/4 der Zeit.

Kann das sein?

Danke

Heiko

himitsu 16. Feb 2015 12:41

AW: XE4: TXMLDocument.LoadFromFile lädt die komplette Datei?
 
Fast alle XML-DOM-Parser laden das komplet in den RAM.
> Stream in den RAM laden > nach Unicode umcodieren > in einen DOM-Baum aufsplitten (viele Objekte je Knoten und Eigenschaft)

Willst du sequentiell laden, ohne daß alles im RAM landet, dann nimm einen SAX-Parser.

Joar, je größer die XML um so langsamer wird das MS-XML-DOM und um so mehr RAM verschwendet es.
Je nach Dateigröße sind viele der verfügbaren XML-DOMs unterschiedlich schnell, bieten unterschiedlich viele Features und verbrauchen unterschiedlich viel RAM.
(ab 200 MB wird es mit dem MS-XML-DOM etwas schwerer, in einem 32-Bit-Programm)


Und nein, Interfaces/Objekte verwendet es wegen was Anderem -> Weil es ein Document Object Model (DOM) ist.

hoika 16. Feb 2015 13:12

AW: XE4: TXMLDocument.LoadFromFile lädt die komplette Datei?
 
Hallo,

danke für die schnelle Info.
Die Dateien sind im Schnitt 50 MB gross
und das MSXML ist 4mal schneller als NativeXML, dass passt.
Ich hatte die Befürchtung, es würde langsamer werden.


Heiko

himitsu 16. Feb 2015 17:23

AW: XE4: TXMLDocument.LoadFromFile lädt die komplette Datei?
 
Nja, das MS-XML-DOM ist gern langsamer, als viele andere XML-Libs. :stupid:

siehe other.7z ->http://www.delphipraxis.net/130751-h...-himix-ml.html

Bernhard Geyer 16. Feb 2015 18:04

AW: XE4: TXMLDocument.LoadFromFile lädt die komplette Datei?
 
Zitat:

Zitat von hoika (Beitrag 1290059)
und das MSXML ist 4mal schneller als NativeXML, dass passt.
Ich hatte die Befürchtung, es würde langsamer werden.

MS-Implementierungen sind nicht per Definition langsamer. Wenn viel mit String gearbeitet wird und die Implementierung Unicodefähig ist, sind die Versionen für < D2009 merklich langsamer da Widestrings extrem langsamer sind gegenüber den Unicodestrings von D2009+


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz