![]() |
Programm wird mit Laufzeit immer langsamer
Hallo zusammen,
ich weiß, dass ich hier eine ziemlich offen Frage stelle, aber ich weiß im Moment nicht so recht wo ich ansetzen soll. Ich habe eine Anwednung die während der Laufzeit per RS232 Daten von einem Gerät abfragt, in die Datenbank schreibt, laufende Messergebnisse in zwei Charts darstellt und ein Teil der Daten in einem VirtualStringTree darstellt. Nun besteht das Problem, dass die Anwendung nach 2 Tagen Laufzeit 2..3 s benötigt um z.B. nach Klick auf einen Button Daten per RS232 abzufragen. Nach dem Click erscheint die Windows-Sanduhr und 2..3 sec später sieht man die Daten am Splitterkabel, das ich zu Überwachungszwecken an die RS232 gehängt habe. Die Antwortzeit des Geräts selber liegt im ms-Bereich. Nach 4 Tagen Laufzeit sind es schon 5..6 s. Das Öffnen des Explorers geschieht normal. Es ist nur mein Programm, das langsamer wird
Delphi-Quellcode:
Jetzt fehlt mir eine Idee was ich noch machen kann, um herauszufinden, warum die Anwendung im Verlauf von Tagen langsamer wird.
function GetMemSpace: Integer;
// ***************************************************************************************************************************************** // Emittelt den Speicherbedarf der aktuellen Anwendung var State: TMemoryManagerState; i: Integer; begin GetMemoryManagerState(State); Result := 0; for i := 0 to high(State.SmallBlockTypeStates) do Inc(Result, State.SmallBlockTypeStates[i].AllocatedBlockCount * State.SmallBlockTypeStates[i].UseableBlockSize); Inc(Result, State.TotalAllocatedMediumBlockSize + State.TotalAllocatedLargeBlockSize); end; // Alle 10 Minuten loggen (60 x 5s) if (Tag = (Tag div 12) * 12) then begin M.dwLength := SizeOf(M); GlobalMemoryStatus(M); GetLogger.Debug('MemLog', format('Used Memory = %11.0n / %14.0n kB', [GetMemSpace / 1024, M.dwAvailVirtual / 1024])); end; Programm ist mit Delphi XE erstellt Danke für jede Hilfe Gerd |
AW: Programm wird mit Laufzeit immer langsamer
Zitat:
|
AW: Programm wird mit Laufzeit immer langsamer
Hallo,
Zitat:
Oder stell nur die letzten 100 Mess-Ergebnisse dar. Zweiter Ansatzpunkt ist die Datenbank. Wohin speicherst Du die Mess-Ergebnisse? Erfolgt die GUI-Darstellung nach: 1. neue Daten hintendran oder 2. GUI verwerfen, alle Daten neu laden und anzeigen |
AW: Programm wird mit Laufzeit immer langsamer
Zitat:
Danke |
AW: Programm wird mit Laufzeit immer langsamer
Zitat:
Ich probiere den Compiler |
AW: Programm wird mit Laufzeit immer langsamer
Wenn du via TCP/IP direkt oder via VPN zugriff auf das System hast, wäre ggf. auch noch Remote-Debugging via PA-Server eine Möglichkeit, die Stelle zu finden, welche den Performance-Einbruch verursacht.
|
AW: Programm wird mit Laufzeit immer langsamer
Von
![]() Die wichtigsten Funktionen loggen/messen kannst auch selber. GetTickCount, TStopwatch oder Dergleichen. Beim Befüllen von Komponenten sind so Dinge wie BeginUpdate bzw. DisableControls beachtet? |
AW: Programm wird mit Laufzeit immer langsamer
Zitat:
BeginUpdate und DisableControls sind beachtet, sollten hier aber kaum eine Rolle spielen, da kaum Daten gemessen werden. Da gibt es andere Methoden wo alle 3 Minuten gemessen wird und das über 1.5 Tagen. Da merkt man kaum was. |
AW: Programm wird mit Laufzeit immer langsamer
Damals gab es noch das "manuelle" GetIt und die Additional-DVDs :stupid:
![]() |
AW: Programm wird mit Laufzeit immer langsamer
Ich würde auf den TVirtualStringList tippen.
'Primitives' Profiling geht auch mit TimeGetTime... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:51 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-2025 by Thomas Breitkreuz