Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.201 Beiträge
 
Delphi 12 Athens
 
#5

Re: allgemein: Parser vorgehensweise.

  Alt 2. Feb 2010, 14:41
Eine gewisse Defragmentierung im Speicher hast du eigentlich immer.

beim dem Speicher:
wenn du nun die XMLDaten alle in einem String hast, brauchst du auch einen "sehr" großen "freien" Speicherbereich im "RAM" dafür, wo dieser String reinpaßt.
Wenn der String nun vergrößert werden muß und das nicht mehr an Ort und Stelle geht, dann brauchst du einen neuen und größeren Speicherblock.
Der alte Speicherblock ist zwar jetzt frei, aber auch zu klein und kann nicht mehr verwendet werden, wenn der String weiterwächst ... wenn der String also oft vergrößert und verschoben wird, hast du zwar immernoch massig Speicher frei, aber irgendwann kann es passieren, daß kein Block mehr vorhanden ist, welcher groß genug ist.

Wenn man alles getrennt hat, dann benötigt man zwar mehr Speicher, kann aber dafür auch viele "kleine" Lücken ausnutzen.

Im Endeffekt kommt es auf den Einzelfall an und grob kann man wohl sagen
- ein zusammenhängender Speicher belegt weniger speicher, aber effektiv könnte es dennoch mehr belegen, inkl. dem unnutzbaren und zukleinen Blöcken
- getrennt kann man besser verteilen und auch schneller ändern, da man nicht immer alles in einem großen Speicher umkopieren muß

praktisch :
- viele Änderungen = getrennt
- wenig/keine Änderungen = zusammenhängend


Zitat:
Wie aufwändig ist das Verschieben
- einmal alles zusammen mit Move/MoveMemory verschieben, also ab der Stelle wo was verändert wird
- wenn man Pech hat und die Größe des Strings nicht an Ort und Stelle verändern kann, dann muß auch noch der ganze String umkopiert werden
- und nun muß man nur noch die Start-Indize der Knoten verschieben (einfache Integeraddition), wessen Daten umkopiert/verschoben wurden.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat