![]() |
AW: Speicherverbrauch und Sortierung
Ok nur um das klarzustellen. Die Komponente besteht aus einer Unterkomponente, welche wiederrum ein array der Unterkomponente enthält, sodass ich theoretisch unendlich viele Ebenen haben kann. Da ich innerhalb einer sehr kurzen Zeit überprüfen muss ob ein Eintrag bereits existiert muss ich auch alle Dateien im Speicher halten. Ich habe bereits versucht die Daten zwischenzuspeichern. Dies benötigt jedoch fast 20x mehr Zeit. Da ich mehrere Einträge pro Sekunde abgleichen und ewentuell hinzufügen muss ist dies inakzeptabel. Der Ansatz eine TObjectList zu verwenden hat geholfen das hinzufügen von neuen Einträgen zu beschleunigen, ich denke jedoch nicht das es möglich ist den Speicherverbrauch über deine DB zu senken. Ich hatte nur gedacht das es vllt noch andere Möglichkeiten geben könnte.
Vielen Dank an alle Edit: Ich hatte bereits zwei Arrays( Daten und Pointer getrent). Jedoch hat das umkopieren durch setlength sehr viel Zeit in Anspruch genommen, sobald ich etliche 10.000 Elemente hatte. Das SOrtieren benötigte unter eine ms. |
AW: Speicherverbrauch und Sortierung
Zitat:
Und woher kommen sie denn? Da unsere Altvoderen es auch geschafft haben ohne Gigabytes an Hauptspeicher Datenverarbeitung zu betreiben, gibt es da vllt. einen Lösungsansatz? Gruß K-H |
AW: Speicherverbrauch und Sortierung
Jedes TSubObject hat die Möglichkeit weitere SubObjects zu besitzen welche in einer TObjectList verwaltet werden. Weietrhin enthält ein SubObject ein Array of String wo verschiedene Daten gespeichert werden, sowie eine THashedStringlist wo die Namen der jeweiligen SubObjecte drinne stehen um eine schnelle Suche zu ermöglichen, einen String für den Namen und einen Pointer auf das Parent. Alles in allem ist dann das TObject welches selber verschiedene TSubObjects enthält, ca 400 Mb groß bei gerade einmal 100.000 Einträgen. Dies würde einen SPeicherverbrauch von ca 7 Gb für alle Dateien bedeuten. Dies ist leider nicht möglich. Wenn ich jedoch verschiedene Teile auslagere verlangsamt sich die Suche um ein vielfachen.
Edit: Die Daten werden von einem anderen Programm generiert und gespeichert danach von einer weiteren Klasse bearbeitet und an die Klasse TTreeObject (sehr hoher Ram-Verbrauch) weitergegeben, welche sie verwaltet. |
AW: Speicherverbrauch und Sortierung
Zitat:
|
AW: Speicherverbrauch und Sortierung
Zitat:
|
AW: Speicherverbrauch und Sortierung
Wonach willst Du suchen? Ich denke, Du solltest deine Daten als Array Of Record einlesen und dann anhand der Suchmöglichkeiten mit diversen Hashmaps arbeiten.
Wenn Du Speicherprobleme bekommst, dann bedenke, das der Schlüssel, der ein Record in einer Dictionary ablegt, im Record selbst nicht gespeichert werden muss. Ach ja: Vergiss deine sortierte Liste. Das ist überflüssig, wenn Du mit Dictionaries arbeitest. |
AW: Speicherverbrauch und Sortierung
Zitat:
Zitat:
Zitat:
Und noch etwas: Es gibt zwar z.B. einen Herzrhythmus, aber keinen Algorythmus! |
AW: Speicherverbrauch und Sortierung
![]() |
AW: Speicherverbrauch und Sortierung
Zitat:
Bezüglich einer Hashtabelle: Da ist das Problem das ich das Konzept nicht richtig verstehe. Auch ist wie vorher gesagt die Methode für mich nun schnell genug. Man kann vielleicht jetzt noch 1-2ms einsparen, da aber nur ca 50 Abfragen pro sec ausgeführt werden wird das keine große Änderung mehr bewirken. Das wichtigste Problem ist wie vorher schon angesprochen der Arbeitspeicherverbrauch. Ansonsten ist nun alles in Ordnung. |
AW: Speicherverbrauch und Sortierung
Zitat:
Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz