AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Programmstart langsam

Ein Thema von freimatz · begonnen am 16. Mai 2019 · letzter Beitrag vom 20. Mai 2019
Antwort Antwort
Seite 1 von 2  1 2   
freimatz

Registriert seit: 20. Mai 2010
1.377 Beiträge
 
Delphi 11 Alexandria
 
#1

Programmstart langsam

  Alt 16. Mai 2019, 21:32
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:
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;
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.
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?

Hier ist das auch schon behandelt, ist aber wohl ein anderes Problem.
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.058 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Programmstart langsam

  Alt 17. Mai 2019, 08:15
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?
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
670 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Programmstart langsam

  Alt 17. Mai 2019, 13:46
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:
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;
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.
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?
Naja, Loaded wird von vielen Komponenten überschrieben um Initialisierungsaufgaben zu erledigen, z. B. bei einer aktiven database connection-Komponente die Verbindung zur Datenbank herzustellen, oder Daten aus einer Datei oder Resource zu laden, etc. Das kann dann dauern, besonders wenn die Aktion erst nach einem Timeout fehlschlägt...
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...
Peter Below
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.449 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Programmstart langsam

  Alt 17. Mai 2019, 13:47
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.
Thomas Mueller
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.377 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Programmstart langsam

  Alt 17. Mai 2019, 21:32
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.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.269 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Programmstart langsam

  Alt 17. Mai 2019, 22:55
Hallo,
Du könntest mit einer Logdatei prüfen, was konkret so lange dauert.
30 Sek. sind wirklich lang.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

AW: Programmstart langsam

  Alt 18. Mai 2019, 08:30
Hast du schon mal mit einem Profiler geguckt, wo genau der Flaschenhals ist?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.169 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Programmstart langsam

  Alt 18. Mai 2019, 11:32
Ist nicht noch eine Abgespecktes AQTime in Delphi dabei?

Ansonsten: https://smartbear.com/product/aqtime-pro/tool-for-more/
ist eigentlich ein muss für Professionelle SW-Entwicklung wenn man hin und wieder mal Performance-Bottlenecks in der Anwendung hat.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.269 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Programmstart langsam

  Alt 19. Mai 2019, 11:37
Hallo,
Zitat:
Neben dem Hauptformular lasse ich beim Start nur Datenmodule erzeugen
Und was steht in den Datenmodulen, DB-Zugriffe?

#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.
Heiko

Geändert von hoika (20. Mai 2019 um 10:38 Uhr)
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.058 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Programmstart langsam

  Alt 20. Mai 2019, 09:39
Neben AQTime möchte ich noch die Nexus Quality Suite in den Raum werfen.
Die gibt es auch in einer brauchbaren Trial-Variante.

https://www.youtube.com/watch?v=oQyqilsYrFk
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 19:47 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