AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Unverhältnismäßig lange Startzeit meiner Delphi-Applikation
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von DevidEspenschied · begonnen am 26. Okt 2014 · letzter Beitrag vom 27. Okt 2014
Antwort Antwort
DevidEspenschied

Registriert seit: 7. Sep 2006
Ort: Berlin
439 Beiträge
 
Delphi 12 Athens
 
#1

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

  Alt 26. Okt 2014, 11:55
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.
Devid
Devid Espenschied
Pre-sales Consultant
Embarcadero Germany GmbH
germany.info@embarcadero.com

Kein Support per PN
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#2

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

  Alt 26. Okt 2014, 11:58
Öffnest Du eine Datenbank?
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
pertzschc

Registriert seit: 29. Jul 2005
Ort: Leipzig
309 Beiträge
 
Delphi 12 Athens
 
#3

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

  Alt 26. Okt 2014, 13:40
Wieviele Forms werden initialisiert?
Was passiert in den OnCreate - Behandlern?
Grüße Christoph
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#4

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

  Alt 26. Okt 2014, 14:28
irgend welche initialization Abschnitte in den Units eingebaut? Wie viele? was passiert da?
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#5

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

  Alt 26. Okt 2014, 15:15
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.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

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

  Alt 26. Okt 2014, 20:31
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 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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von rapante
rapante

Registriert seit: 3. Jun 2009
Ort: OPR
172 Beiträge
 
Delphi 12 Athens
 
#7

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

  Alt 27. Okt 2014, 08:51
Eventuell funkt dir da auch ein Virenscanner dazwischen...
Ich hab' sowas schon mehrfach mit Kaspersky beobachten können.
Micha
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

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

  Alt 27. Okt 2014, 09:21
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...
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#9

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

  Alt 27. Okt 2014, 09:35
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.

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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
DevidEspenschied

Registriert seit: 7. Sep 2006
Ort: Berlin
439 Beiträge
 
Delphi 12 Athens
 
#10

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

  Alt 27. Okt 2014, 12:09
Danke, ich werde mir mal die Unit-Initialisierungen und dann AQTime anschauen. Mal sehen, was dabei herauskommt...
Devid
Devid Espenschied
Pre-sales Consultant
Embarcadero Germany GmbH
germany.info@embarcadero.com

Kein Support per PN
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:48 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