![]() |
Programmstart langsam
Hallo,
ein Anwender stört sich daran, dass mein Programm langsam startet. Mich hat es auch schon gestört. Es gibt viele kleinere Aktionen und einen größeren Block mit 30 Sekunden. Mein Programm ist eine Windows-Anwendung, XE-2, MDI und Expressbars von DevExpress. Durch debuggen stellte ich fest, dass die Zeit in der unit System.Classes hier gebraucht wird:
Delphi-Quellcode:
G.Count ist 726. Das erscheint recht viel, dürfte aber der Anzahl der Komponenten in meinem Programm entsprechen. Ich sehe derzeit auch keine Möglichkeit einen Teil auszulagern, weil DevExpress das Menüband u.a. beim Start ja auch lädt.
procedure NotifyGlobalLoading;
var I: Integer; G: TList; begin G := GlobalLoaded; // performance: eliminate repeated trips through TLS lookup for I := 0 to G.Count - 1 do TComponent(G[I]).Loaded; end; Einige Fälle hab eich durchgesteppt. Irgendwann kommt man in procedure TComponent.Loaded; an wo dann Exclude(FComponentState, csLoading); gemacht wird. Ist jemand ein Problem bekannt und/oder eine Idee wie man das verbessern kann? ![]() |
AW: Programmstart langsam
Ich nehme an, das Menüband zeigt Icons/Bilder?
Wie ist die Startzeit, wenn du die Verbindung zwischen ImageList (oder woher die Icons auch kommen mögen) und Menüband trennst, so dass keine Icons angezeigt werden? |
AW: Programmstart langsam
Zitat:
726 Komponenten auf einem Form sind allerdings auch reichlich viel, da solltest Du mal über eine bessere Aufteilung nachdenken und, wenn möglich, Teile des UI erst erzeugen wenn sie auch wirklich gebraucht werden. Stichwort Frames... |
AW: Programmstart langsam
Lässt Du evtl. alle Formulare Deines Programms automatisch beim Programmstart erzeugen? Wenn ja, schalte das mal für alle außer dem Hauptformular aus und prüfe, wie sich die Startzeit ändert.
Wenn das genug bringt, musst Du halt die anderen Formulare erzeugen (und ggf. freigeben), wenn sie gebraucht werden. |
AW: Programmstart langsam
Hallo,
Danke für all Eure Anworten und Anregungen. @TiGü: ich habe die Imagelisten alle mal gecleart. Es ist leider immer noch langsam. @peterbelow: Datenbankverbindungen habe ich keine. Klar sind 726 Komponenten viel. Allerdings brauche ich die auch beim Starten schon. Der Anwender kann sich das Menüband und Symbolleisten alle selber konfigurieren. Beim Start wird das geladen und daher müssen die Controls auch alle da sein. @dummzeuch: Neben dem Hauptformular lasse ich beim Start nur Datenmodule erzeugen. Dazu kommt noch ein Splashscreen. Dann kommen noch zwei weitere Formulare, die sehr schnell gehen. Kann ich irgendwie feststellen ob und welche controls lange brauchen? Ich kann ja nicht in System.Classes eine Zeitmessung einbauen. |
AW: Programmstart langsam
Hallo,
Du könntest mit einer Logdatei prüfen, was konkret so lange dauert. 30 Sek. sind wirklich lang. |
AW: Programmstart langsam
Hast du schon mal mit einem Profiler geguckt, wo genau der Flaschenhals ist?
|
AW: Programmstart langsam
Ist nicht noch eine Abgespecktes AQTime in Delphi dabei?
Ansonsten: ![]() ist eigentlich ein muss für Professionelle SW-Entwicklung wenn man hin und wieder mal Performance-Bottlenecks in der Anwendung hat. |
AW: Programmstart langsam
Hallo,
Zitat:
#Update#: Nein, keine DB-Zugriffe, wie er es ja bereits gesagt hatte ... Ich bleibe bei meinem Tipp, eine Log-Datei zu benutzen, falls AQTime oder ähnliches nicht zur Verfügung steht. |
AW: Programmstart langsam
Neben AQTime möchte ich noch die Nexus Quality Suite in den Raum werfen.
Die gibt es auch in einer brauchbaren Trial-Variante. ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:56 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