AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Maßnahmen zum Speicherverbrauch minimieren

Ein Thema von stahli · begonnen am 15. Jul 2015 · letzter Beitrag vom 23. Jul 2015
Antwort Antwort
Seite 4 von 7   « Erste     234 56     Letzte »    
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.352 Beiträge
 
Delphi 11 Alexandria
 
#31

AW: Maßnahmen zum Speicherverbrauch minimieren

  Alt 16. Jul 2015, 18:19
da dadurch nur noch ein Hash im Speicher bleibt statt des ganzen Strings.
Das halte ich für ein Gerücht: dann müsste die Hash-Funktion ja eindeutig sein und das Dictionary ließe sich nicht aufzählen.
Ja, mit der internen Hashfunktion ist das so. Aber man kann auch problemlos eigene Hashwerte berechnen und die in das Dictionary legen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli
Online

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.337 Beiträge
 
Delphi 11 Alexandria
 
#32

AW: Maßnahmen zum Speicherverbrauch minimieren

  Alt 16. Jul 2015, 18:39
Dann wäre das letztlich ein eindeutiger Schlüssel bzw. Index für einen bestimmten Eintrag - oder?
Ansonsten würden Hashkollisionen möglich sein oder in der Hashtabelle viele Plätze unbelegt bleiben müssen.
Kannst Du Euren Ansatz noch etwas erklären?
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#33

AW: Maßnahmen zum Speicherverbrauch minimieren

  Alt 16. Jul 2015, 18:51
Zitat:
Für bekannte und beschränkte Eingabemengen können auch perfekte (im Sinne von kollisionsfreie) Hashfunktionen gefunden werden.
Halte ich also für ein Mär, wenn jemand behauptet er hat ein Hash-Algorithmus, der einen Wert aus einer beschränkten Menge liefert und damit auch unbeschränkte Eingabemengen kollisionsfrei hashen kann.

Ein Dictionary unterteilt die Key-Menge in Buckets, wo alle Elemente hineinkommen, die den gleichen Hashwert haben und such dann nur noch in diesem Bucket nach dem passenden.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.352 Beiträge
 
Delphi 11 Alexandria
 
#34

AW: Maßnahmen zum Speicherverbrauch minimieren

  Alt 16. Jul 2015, 18:55
Naja, der Fall ist etwas speziell, in dem Fall war eine Hashfunktion machbar, weil die Strings bestimmte Bedingungen erfüllen. Teile davon konnten in die dahinterliegenden Objekte zusammengefasst werden (stell es dir wie einen Index vor), und bestimmte Teile sind ansonsten eindeutig.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#35

AW: Maßnahmen zum Speicherverbrauch minimieren

  Alt 16. Jul 2015, 19:04
Naja, der Fall ist etwas speziell, in dem Fall war eine Hashfunktion machbar, weil die Strings bestimmte Bedingungen erfüllen. Teile davon konnten in die dahinterliegenden Objekte zusammengefasst werden (stell es dir wie einen Index vor), und bestimmte Teile sind ansonsten eindeutig.
Also liegt dort ein bestimmte und beschränkte Eingabemenge vor ... sag das doch gleich
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli
Online

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.337 Beiträge
 
Delphi 11 Alexandria
 
#36

AW: Maßnahmen zum Speicherverbrauch minimieren

  Alt 16. Jul 2015, 22:24
Aaalsooo...

Unter 32bit habe ich mal 4 Varianten versucht, bis Out of Memory kam:

Debug, IDE, 97.059, 1.946,2 MB
Debug, EXE, 97.125, 1.947,8 MB

Release, IDE, 97.498, 1.955,0 MB
Release, EXE, 97.498, 1.955,2 MB

Also ob Debug oder Release bzw. unter IDE-Kontrolle oder nicht spielt keine Rolle.



Unter 64bit (Debug, IDE) habe ich mal 600.000 Mainobjekte erzeugt.
Bei ca. 5GB hat Windows scheinbar immer Daten ausgelagert und dann wieder weitere Objekte erzeugt.
Keine Ahnung, was da genau passiert.
Zumindest sollte man den Speicherverbrauch wohl nicht so hoch treiben, da die Anwendung sonst ausgebremst wird.
(Alles nur mein erster Eindruck.)


Dann bin ich zurück auf 32bit und habe die gleichen Strings durch Referenzen auf existierende Interfaces ersetzt und dachte, das würde eine deutlich höhere Anzahl von MainObjekten ermöglichen. Das Gegenteil war der Fall.
Es waren nur noch 92.539!?

Kann sein, dass es heute zu spät für mich ist. Das schaue ich mir am WE noch näher an.


Aber ich habe mir auch mal die gesamten Datenobjekte ausgeben lassen
92.480 Mainobjekte -> 1.942.058 Gesamtobjekte
Die Mainobjekte haben also durchschnittlich 20 Unterobjekte und insgesamt sind es fast 2Mio.


Das sind also schon ein paar, aber die Speicherbedarfsreduzierung bleibt auf jeden Fall ein Ziel von mir.


Dann bin ich zurück zu den Strings von vorher (alte Sicherung verwendet).
Die Objekte blieben bei 92540->1943318 obwohl es am Anfang ja 97.000 waren.


Nach einem PC-Neustart waren es noch weniger:
91348->1918214


Also die Gründe für diese Schwankungen kann ich mir nicht erklären.
Vielleicht muss man einfach damit leben.
Warum die Änderung auf Objektreferenzen statt den Strings nichts brachte oder sogar kontraproduktiv war, ist mir rätselhaft.
(Ein Fehler meinerseits kann hier ggf. allerdings auch möglich sein.)
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#37

AW: Maßnahmen zum Speicherverbrauch minimieren

  Alt 16. Jul 2015, 22:30
Tja, ich habe dir gezeigt wie man den Speicherbedarf bei vielen gleichen Strings groß macht oder klein hält.

Da du nicht zeigen möchtest, wie du das konkret umsetzt, wirst du dich darum selber kümmern müssen.

Eins kann ich aber sagen:

Das mit den Interfaces und den Strings ist von hinten nach vorn dreimal gedreht und einmal hochgeworfen. Ein String wird doch schon quasi wie ein Interface behandelt (siehe mein Beispiel). Und du bastelst da nochmal ein Interface drum herum und das anscheinend auch noch falsch ...
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (16. Jul 2015 um 22:33 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli
Online

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.337 Beiträge
 
Delphi 11 Alexandria
 
#38

AW: Maßnahmen zum Speicherverbrauch minimieren

  Alt 16. Jul 2015, 22:32
Ein Auszug wir schwierig und durch das ganze Projekt wirst Du Dich nicht wühlen wollen.
Ich nehme mir am WE dafür Zeit.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#39

AW: Maßnahmen zum Speicherverbrauch minimieren

  Alt 16. Jul 2015, 22:37
Ein Auszug wir schwierig und durch das ganze Projekt wirst Du Dich nicht wühlen wollen.
Ich nehme mir am WE dafür Zeit.
Weil das ganze Projekt auch völlig unnötig ist

Es geht doch nur um das BO und die Liste mit den Eigenschaften und die Stelle, wo so ein BO erzeugt wird.
Da ist der Speicherfresser. Warum sollte ich mir etwas anschauen, wo du bunte Striche malst?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#40

AW: Maßnahmen zum Speicherverbrauch minimieren

  Alt 16. Jul 2015, 22:42
Zitat von Sir Rufo:
Und du bastelst da nochmal ein Interface drum herum und das anscheinend auch noch falsch ...
Warum sollte ich mir etwas anschauen, wo du bunte Striche malst?
Da ist aber jemand angefressen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 7   « Erste     234 56     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 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