Frage zu lxml und Speicherverbrauch/-vorteil

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Marky
User
Beiträge: 24
Registriert: Donnerstag 22. Januar 2009, 08:12

Frage zu lxml und Speicherverbrauch/-vorteil

Beitragvon Marky » Donnerstag 30. April 2009, 10:19

Hallo zusammen,

hätte mal ein Frage akademischer Natur,

mir wird nicht deutlich, was der Unterschied/Vorteil bzgl. Speicherverbrauch bei Verwendung von lxml und der DOM-Representation einer XML-Datei ist.
D.h. wenn ich eine XML-Datei mit minidom parse, dann liegt der DOM-Baum komplett im Speicher, was ja eben auch ein Nachteil dieses Modells ist.
Bei lxml, das auf ElementTree basiert, sind das - sofern ich das korrekt verstehe - nach dem Parsen Element-Objekte als Baumstruktur, die dann von ElementTree gekapselt werden.

The ElementTree wrapper type adds code to load XML files as trees of Element objects, and save them back again.


Die liegen ja nach dem Parsen auch alle im Speicher. Mir ist da die Struktur nicht klar, die gegenüber einem DOM den Vorteil hinsichlich Speicherverbrauch bringt.

Kann das jemand mal erläutern? ...
Gruß
Marky
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Donnerstag 30. April 2009, 10:52

Der Vorteil ist, dass das alles nach dem Parsen als C-Datenstruktur im Speicher liegt (eben das was libxml2 so ausgibt) und es erst bei Bedarf in Python-Objekte wrappt. Die Python-Objekte sind durch den Overhead den Python zur Objektverwaltung braucht und durch die Komfortfunktionen die Programmierer von den Objekten erwartet etwas größer.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
BlackJack

Beitragvon BlackJack » Donnerstag 30. April 2009, 11:09

Wahrscheinlich erzeugt `minidom` auch mehr Objekte, weil die DOM-API einiges in eigene Objekte kapselt, auf das man bei der `ElementTree`-API direkter zugreifen kann. Text-Knoten vs. einfaches Zeichenketten-Attribut zum Beispiel.
Marky
User
Beiträge: 24
Registriert: Donnerstag 22. Januar 2009, 08:12

Beitragvon Marky » Donnerstag 30. April 2009, 11:36

ok. Besten Dank für die Info.
Gruß

Marky
problembär

Beitragvon problembär » Donnerstag 30. April 2009, 13:33

Schau auch mal hier:

http://effbot.org/zone/celementtree.htm#benchmarks

Offenbar ist da viel im Umbruch. Blöd, wenn man damit arbeiten will, und dann vielleicht ein bald veraltetes Modell einsetzt.

Gruß
Marky
User
Beiträge: 24
Registriert: Donnerstag 22. Januar 2009, 08:12

Beitragvon Marky » Donnerstag 30. April 2009, 13:38

na ja, ich denke mal bei Verwendung von lxml kapselt ja diese Library den Zugriff auf den Baum. Ich denke, da muss man sich um die darunterliegende Implementierung keine Gedanken machen. Und lxml scheint mir derzeit die beste Lib zu sein.
Gruß

Marky

Wer ist online?

Mitglieder in diesem Forum: noisefloor