|
|
Stetig abnehmende Performance, Ursachen unbekannt |
|
eupho |

Forum-Meister
|
 |
Beiträge: 777
|
 |
|
 |
Anmeldedatum: 07.01.09
|
 |
|
 |
Wohnort: Marburg
|
 |
|
 |
Version: R2009b
|
 |
|
|
 |
|
Verfasst am: 11.08.2010, 13:10
Titel: Stetig abnehmende Performance, Ursachen unbekannt
|
 |
|
 |
|
Hallo,
Und zwar habe ich ein relativ umfangreiches GUI geschrieben, das MetaDaten aus DICOM-Dateien ausliest und bearbeitet. Die Performance zu Beginn ist sehr gut, allerdings nimmt die Performance stetig ab, je länger ich mich in der GUI aufhalte.
Die DICOM Dateien öffne ich mit dicominfo.m (Image Processing Toolbox), die die MetaDaten anschließend in ein struct schreibt. Mein Programm verwendet einige Parameter dieser struct und plottet diese beispielsweise.
Bevor ich in der GUI eine neue DICOM Datei einlese, wird der aktuelle Workspace mit clear gelöscht.
Trotz clear wird das Programm zunehmend langsamer, bis hin zur völligen Unbrauchbarkeit. Ich muss dann MATLAB neu starten, damit der Speicher wieder freigegeben wird. Dabei habe ich 4 GB RAM und die DICOM Dateien die ich damit öffne liegen in der Größenordnung von 100 kB.
- Welche Möglichkeiten habe ich, die Ursachen für diese Speicherplatzallokierung zu finden?
- Ist eventuell eine Art fclose auch für DICOM Dateien notwendig?
- Wenn ich Variablen überschreibe, wird dann der alte Wert im Speicher beibehalten? Dies könnte eine mögliche Ursache sein, weil ich die WindowButtonMotionFcn benutze, die bei jeder Mausbewegung 2 Variablen jeweils überschreibt.
Danke im Voraus & Grüße aus dem hessischen Marburg,
Daniel
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 11.08.2010, 14:06
Titel:
|
 |
Hallo Daniel,
verwende doch mal den PROFILEr, um hgeraus zu finden, in welchen Zeilen die Rechenzeit verbraten wird.
verät Dir etwas über den Speicher.
Es kann auch sehr viele Resourcen verbraten, wenn man sehr viele Objekte (AXES, LINE, PLOT, IMAGE) in Matlab zeichnet, ohne die alten (verdeckten?) Objekte wieder zu löschen.
Gruß, Jan
|
|
|
eupho |
Themenstarter

Forum-Meister
|
 |
Beiträge: 777
|
 |
|
 |
Anmeldedatum: 07.01.09
|
 |
|
 |
Wohnort: Marburg
|
 |
|
 |
Version: R2009b
|
 |
|
|
 |
|
Verfasst am: 11.08.2010, 14:29
Titel:
|
 |
Uhh, das kann gut sein. Wie lösche ich die denn?
Ich benutze derzeit nur "cla" vor jedem neuen Plot, ist das ausreichend?!
|
|
|
vega1013 |

Forum-Century
|
 |
Beiträge: 162
|
 |
|
 |
Anmeldedatum: 26.02.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 11.08.2010, 14:35
Titel:
|
 |
Hallo,
meine Vermutung geht auch in die von Jan angedeutete Richtung.
Hatte bei einem GUI, bei dem ich Werte über die Zeit geplottet habe, das gleiche Problem. Zunächst war die Performance IO, mit fortlaufender Dauer wurde sie jedoch schlechter bis hin zum Programmabsturz. Die Lösung für mein Prop. war, die Daten (Lines) aus der Axes zu löschen, sobald ich diese nicht mehr benötigte (anzeigen musste).
Vielleicht hilft dir das ja weiter
Gruß
|
|
|
vega1013 |

Forum-Century
|
 |
Beiträge: 162
|
 |
|
 |
Anmeldedatum: 26.02.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 11.08.2010, 14:47
Titel:
|
 |
Da war ich ein bisschen zu langsam...
Habe meine Plote damals mit einer Schleife und
geschrieben, und die Werte die ich nicht mehr benötigte beispielsweise mit
gelöscht.
Gruß
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 11.08.2010, 14:48
Titel:
|
 |
Hallo Eupho,
CLA löscht die die Objekt im aktuellen AXES Objekt. Wenn du aber jedesmal ein neues AXES-Objekt erstellst, wird das nicht helfen.
Sicherer wäre es, sich den Handle des AXES-Objektes zu merken und per "cla(AxesH, 'reset')" die Objekte zu löschen.
zeigt Dir die Anzahl aller Objekte im aktuellen Fenster. Wenn dies dramatisch wächst, hast Du Deinen Zeitfresser gefunden.
Gruß, Jan
|
|
|
eupho |
Themenstarter

Forum-Meister
|
 |
Beiträge: 777
|
 |
|
 |
Anmeldedatum: 07.01.09
|
 |
|
 |
Wohnort: Marburg
|
 |
|
 |
Version: R2009b
|
 |
|
|
 |
|
Verfasst am: 11.08.2010, 15:15
Titel:
|
 |
Ursache möglicherweise gefunden:
Ich habe 2 axes und cla nur bei einer axes verwendet und nicht bei der leistungshungrigen mouseover axes. Das Problem scheint mit dem zweiten cla gelöst sein.
Vielen Dank für die Hilfe!
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|