Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Unverhältnismäßig lange Startzeit meiner Delphi-Applikation (https://www.delphipraxis.net/182457-unverhaeltnismaessig-lange-startzeit-meiner-delphi-applikation.html)

devidespe 26. Okt 2014 10:55

Unverhältnismäßig lange Startzeit meiner Delphi-Applikation
 
Hallo,

meine Delphi-Applikation benötigt unverhältnismäßig viel Zeit beim Starten, das dauert je nach System bis zu 10 Sekunden, und das ohne ein Zeichen für den Anwender (z.B. Kreis/Sanduhr des Mauszeigers). Auf der Suche des Problems habe ich mit der ersten Programmzeile in der DPR-Datei bis kurz vor dem Application.CreateForm einen SplashScreen inkl. Zeitmessung eingebaut, weil auch einige Startinitialisierungen wie z.B. Kommandozeilenparameter durchgeführt werden. Die Initialisierungszeit beträgt aber nur ca. 2 Sekunden, beträgt also nicht den Großteil der tatsächlichen Ladezeit.

Das Programm benötigt Admin-Rechte, die es beim Start einfordert. Das sehe ich aber nicht als Problem an, und die Zeitmessung beginnt ja erst mit der Zustimmung in der Windows-Benutzerkontensteuerung.

Dann dachte ich, die Exe-Datei könnte zu groß sein (ca. 11 MByte). Daraufhin habe ich einen Runtime-Packer verwendet (ASPack, http://www.aspack.com) - auch kein Unterschied.

An Windows 7 x86 und Delphi XE (inkl. der neuesten Aktualisierungen) kann es meiner Meinung nach auch nicht liegen.

Habt Ihr Vorschläge, wie ich dem Problem auf den Zahn fühlen kann? In welche Richtung kann man da weiter forschen?

Vielen Dank.

Union 26. Okt 2014 10:58

AW: Unverhältnismäßig lange Startzeit meiner Delphi-Applikation
 
Öffnest Du eine Datenbank?

pertzschc 26. Okt 2014 12:40

AW: Unverhältnismäßig lange Startzeit meiner Delphi-Applikation
 
Wieviele Forms werden initialisiert?
Was passiert in den OnCreate - Behandlern?
Grüße Christoph

Lemmy 26. Okt 2014 13:28

AW: Unverhältnismäßig lange Startzeit meiner Delphi-Applikation
 
irgend welche initialization Abschnitte in den Units eingebaut? Wie viele? was passiert da?

Dejan Vu 26. Okt 2014 14:15

AW: Unverhältnismäßig lange Startzeit meiner Delphi-Applikation
 
Die 'initialization' Abschnitte werden aber gänzlich *vor* der ersten Zeile des Hauptprogramms ausgeführt. Um die Suche einzugrenzen, füge einen Breakpoint auf dem 'Begin' des Hauptprogramms ein. Starte die Anwendung.
Vergeht die meiste Zeit, *bevor* der Breakpoint erreicht wird, liegt es an einer der 'initialization' Abschnitte der Units. Stoppt die Anwendung sehr schnell am Breakpoint, liegt es an den Formularen selbst. Entweder werden sehr viele automatisch erstellt oder im OnCreate/OnShow der Formulare passiert etwas, das sehr lange dauert. Aber das wurde ja oben schon erwähnt.

Um Eingrenzen einfach mal nur das Hauptformular erstellen lassen. Danach sukzessive die einzelnen Formulare erstellen, bis die Verzögerung eintritt.

Sir Rufo 26. Okt 2014 19:31

AW: Unverhältnismäßig lange Startzeit meiner Delphi-Applikation
 
Die zeitintensiven Initialisierungen kann man auch als lazy load implementieren, so dass die erst beim ersten echten Zugriff erstellt werden oder auch ganz modern als
Delphi-Quellcode:
TTask.Future
.

Ob der erste echte Zugriff dann eine Sekunde dauert ist nicht so tragisch, wie eben beim Start 14 Sekunden zu warten (weil z.B. 14 Instanzen initialisiert werden die jeweils 1 Sekunde benötigen).

Auch sollte man darauf achten, dass bei der Initialisierung nicht zu viel passiert und auch die Unterinstanzen als lazy load oder Future implementiert.

rapante 27. Okt 2014 07:51

AW: Unverhältnismäßig lange Startzeit meiner Delphi-Applikation
 
Eventuell funkt dir da auch ein Virenscanner dazwischen...
Ich hab' sowas schon mehrfach mit Kaspersky beobachten können.

Der schöne Günther 27. Okt 2014 08:21

AW: Unverhältnismäßig lange Startzeit meiner Delphi-Applikation
 
Das ist doch jetzt grade alles Raterei- Kann man nicht mit Tools wie AQTime einfach schauen, was wie lange braucht? Ob der schon die Unit-Initialisierung erwischt weiß ich allerdings nicht...

Bernhard Geyer 27. Okt 2014 08:35

AW: Unverhältnismäßig lange Startzeit meiner Delphi-Applikation
 
Zitat:

Zitat von rapante (Beitrag 1277465)
Eventuell funkt dir da auch ein Virenscanner dazwischen...
Ich hab' sowas schon mehrfach mit Kaspersky beobachten können.

Kann ich bestätigen. Aber ist keine Dauerzustand sondern nur zwischenzeitliche Peaks.

Zitat:

Zitat von Der schöne Günther (Beitrag 1277471)
Das ist doch jetzt grade alles Raterei- Kann man nicht mit Tools wie AQTime einfach schauen, was wie lange braucht? Ob der schon die Unit-Initialisierung erwischt weiß ich allerdings nicht...

Das ist eine gute Idee. AQTime dürfte jeder (in der abgespeckten) Version haben. Aber für diesen Einsatzzweck ausreichend.
Unit-Initalisierung rufen fast immer irgenwelche privaten Funktionen auf. Diese werden auf jedenfall erwischt.

devidespe 27. Okt 2014 11:09

AW: Unverhältnismäßig lange Startzeit meiner Delphi-Applikation
 
Danke, ich werde mir mal die Unit-Initialisierungen und dann AQTime anschauen. Mal sehen, was dabei herauskommt...


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:43 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