AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Freigabe von Objekten zeitaufwändig?
Thema durchsuchen
Ansicht
Themen-Optionen

Freigabe von Objekten zeitaufwändig?

Ein Thema von mjenke · begonnen am 9. Aug 2010 · letzter Beitrag vom 31. Aug 2010
Antwort Antwort
Seite 1 von 3  1 23      
mjenke

Registriert seit: 28. Mär 2003
Ort: Bonn
131 Beiträge
 
#1

Freigabe von Objekten zeitaufwändig?

  Alt 9. Aug 2010, 15:29
Hallo, alle miteinander!


Ich habe mal eine allgemeine Frage: Kann es sein, dass Objekte in Delphi wesentlich langsamer freigegeben als sie aufgebaut werden?

Ich frage aus folgendem Grund: In einer Anwendung, die mehrere hunderttausend-Objekte erzeugt, ist die Zeit, die für das Freigeben der Objekte verwendet wird, wesentlich (!!!!) höher als die Zeit, die benötigt wird, um sie aufzubauen. Die Verschachtelung der Objekte ist ziemlich diffizil, aber grundsätzlich ist es so, dass Objekte Unterobjekte besitzen, die wiederum n Unterobjekte besitzen etc. Die Verwaltung dieser Objekte ist baumähnlich.

Ich habe im Quelltext bereits alle Schrauben gedreht, die ich gefunden habe, um das Zerstören zu beschleunigen. Dennoch baut die Anwendung diese ganzen Objekte innerhalb weniger Minuten auf (3-4 Minuten), benötigt aber gut das 20fache an Zeit (70-80 Minuten), um sie wieder zu zerstören.

Handelt es sich dabei um ein allgemeines Phänomen, dass Speicherfreigabe kompliziertere Wege läuft, als Speicherallokation? Oder muss es doch an meinem Quellcode liegen?


Vielen Dank im Voraus!

Matthias
Matthias Jenke
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Freigabe von Objekten zeitaufwändig?

  Alt 9. Aug 2010, 15:34
Mit oder Ohne Debug-Infos (Stichwort Speichercheck/FastMM)?
Genügend Speicher vorhanden (Auslagern von Programmspeicher durch Windows)?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Freigabe von Objekten zeitaufwändig?

  Alt 9. Aug 2010, 15:41
Womit werden die Unterobjekte verwaltet, bzw. wo werden deren Referenzen gespeichert?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
mjenke

Registriert seit: 28. Mär 2003
Ort: Bonn
131 Beiträge
 
#4

AW: Freigabe von Objekten zeitaufwändig?

  Alt 9. Aug 2010, 16:35
Hi, habe mal die Debug-Informationen ausgeschaltet, aber das ändert am Laufzeitverhaltn nichts.

@himitsu: Wie ist die Frage zu verstehen? Unterobjekte werden in einem Array Of TObject gespeichert.
Matthias Jenke
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Freigabe von Objekten zeitaufwändig?

  Alt 9. Aug 2010, 16:38
Dein Programm braucht also 70-80 Minuten um sich zu beenden?

Dann kann da aber eigentlich irgendwas nicht stimmen... Eventuell solltest du dann deinen Code überdenken...
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Freigabe von Objekten zeitaufwändig?

  Alt 9. Aug 2010, 16:58
OK, und wie werden dabei die Unterobjekte freigegeben?
Es wird doch nicht etwa jedes Objekt einzeln freigegeben, womöglich auch noch beginnend vom Anfang des Arrays und dann ständig jedes Objekt aus dem Array entfernt, die restlichen Einträge hochkopiert und dabei das Array stückchenweise verkleinert?

Ohne zu wissen was dein Code macht, kann dir keiner helfen.

PS: bei meinem himXML hatte ich anfangs auch diesen Effekt, bis ich das Freigeben umgestellt hatte > alle Kind-Objekte im Destructor freigeben und dann das Array komplett löschen.

PSS: Warum nutzt du keine TObjektList?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 9. Aug 2010 um 17:03 Uhr)
  Mit Zitat antworten Zitat
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
533 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Freigabe von Objekten zeitaufwändig?

  Alt 9. Aug 2010, 17:01
@himitsu: Wie ist die Frage zu verstehen? Unterobjekte werden in einem Array Of TObject gespeichert.
Objekte in einer TObjectList würden Z.B. beim freigeben der Liste automatisch freigegeben.
Sind das visuelle Objekte?
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Freigabe von Objekten zeitaufwändig?

  Alt 9. Aug 2010, 17:14
Sind eventuell WideStrings in den Objekten? Ich habe die Erfahrung gemacht, dass das Freigeben von WideStrings ewig dauert.

Ansonsten: Ist ReportMemoryLeaksOnShutdown eingeschaltet? Wenn ja, schalte es mal aus, und schau, ob es dann schneller ist.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Freigabe von Objekten zeitaufwändig?

  Alt 9. Aug 2010, 17:53
ReportMemoryLeaksOnShutdown prüft nur am Ende des Programmes nach, ob noch was im Speichermanager liegt undzwar kurz vor Freigabe des Speichermanagers ... zu diesem Zeitpunkt wurden schon alle Objekte freigegeben (abgesehn von den Speicherleckt und diese würden dann auch angezeigt) ... dieses hat also keine Auswirkung zu diesem Zeitpunkt.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#10

AW: Freigabe von Objekten zeitaufwändig?

  Alt 9. Aug 2010, 18:10
Ja, wenn bei deren Freigabe Exceptions auftreten. Zwei Dinge würde ich testen:

a) gibt es Memory Leaks (-> das könnte auf Probleme beim eigentlich beabsichtigten Freigeben hinweisen)

b) wie werden Exceptions im Destruktor abgefangen, mit try except // nix end?
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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:00 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