Frage

Was tun Sie, Startgeschwindigkeit (oder zu verringern Startzeit) Ihre Delphi app?

erhöhen

Anders als anwendungsspezifische, gibt es einen Standard-Trick, der immer funktioniert?

Hinweis: Ich spreche nicht über schnelle Algorithmen oder Ähnliches. Nur die Leistungssteigerung beim Start, in Bezug auf die Geschwindigkeit.

War es hilfreich?

Lösung

Versuchen Sie, so wenig wie möglich in der Haupt OnCreate-Ereignis des Formulars . Vielmehr eine Initialisierung auf eine andere Methode bewegen und es tun, sobald das Formular an den Benutzer angezeigt wird. Ein Indikator dafür, dass der App mit einem langen Mauszeiger geht einem langen Weg besetzt ist.

Versuche getan zeigen, dass, wenn Sie genau die gleiche Anwendung nehmen und einfach eine Startbenachrichtigung, um es hinzuzufügen, Benutzer wahrnehmen tatsächlich, dass der App als Ausgang schneller!

Anders als das man die üblichen Dinge tun kann wie Debug-Informationen ausschließen und ermöglicht die Optimierung im Compiler.

Hinzu kommt, dass, Auto nicht erstellen alle Ihre Formulare . Erstellen sie dynamisch , wie Sie sie benötigen.

Andere Tipps

In den Projektoptionen, nicht automatisch erstellen alle Ihre Formen vorne. Erstellen und befreien sie je nach Bedarf.

Nun, wie Argalatyr schlug ich meinen Kommentar auf eine separate Antwort zu ändern:

Als eine Erweiterung der „do Auto nicht Formulare erstellen“ Antwort (die ganz von selbst wirksam sein wird) Ich schlage vor, Verbindungen zu Datenbanken zu verzögern öffnen, Internet, COM-Server und alle Peripheriegeräten, bis Sie sie brauchen zuerst.

Drei Dinge geschehen, bevor das Formular angezeigt wird:

  1. Alle Blöcke ‚Initialisierung‘ in allen Einheiten sind in „zuerst gesehen“ Reihenfolge ausgeführt.
  2. Alle automatisch erstellten Formulare werden erstellt (geladen von DFM-Dateien und deren OnCreate-Handler genannt wird)
  3. Sie Hauptformular angezeigt wird (OnShow und OnActivate genannt werden).

Wie andere haben darauf hingewiesen, sollten Sie automatisch erstellen nur kleine Anzahl von Formen (vor allem, wenn sie komplizierte Formen mit vielen Komponenten sind) und nicht eine langwierige Bearbeitung in OnCreate Ereignisse jener Formen setzen sollte. Wenn durch Zufall, Ihre wichtigste Form sehr kompliziert ist, sollten Sie es neu zu gestalten. Eine Möglichkeit ist Hauptform in mehrere Rahmen aufgeteilt, die bei Bedarf geladen werden.

Es ist auch möglich, dass eine der Initialisierungsblöcke einige Zeit nimmt auszuführen. Um zu überprüfen, setzen Sie einen Haltepunkt in der ersten Zeile des Programms (Haupt ‚begin..end‘ Block in der .dpr-Datei) und das Programm starten. Alle Initialisierungsbaustein ausgeführt wird, und dann wird der Breakpoint die Ausführung zu stoppen.

In ähnlicher Weise können Sie (F8) über das Hauptprogramm treten können -. Sie werden sehen, wie lange es dauert, jede automatisch erstellte Formular erstellt werden

Zeigen Sie einen Begrüßungsbildschirm, damit die Leute nicht, die langen Startzeiten feststellen.)

Schnellster Code - es ist der Code, die nie ausgeführt wird. Ganz offensichtlich, wirklich;)

passieren

Der Einsatz der Anwendung kann (und in der Regel nicht!) in einer Weise, kann der Entwickler nicht in Betracht gezogen hat. Nach meiner Erfahrung erzeugt dies mehr Performance-Probleme als jemand möchte.

Eine gemeinsame Engpass ist Dateizugriff - eine Konfigurationsdatei, INI-Datei, die die Anwendung erforderlich ist, zu starten, kann auch auf einer Entwicklermaschine durchführen, aber bodenlos in verschiedenen Einsatzsituationen führen. In ähnlicher Weise können Anwendungsprotokollierung Leistung behindern - ob für den Dateizugriff Gründen oder Dateiwachstum anmelden.

Was ich sehe, so oft sind Rich-Client-Anwendungen in einer Citrix-Umgebung eingesetzt werden, oder auf einem freigegebenes Netzlaufwerk, in dem das Infrastruktur-Team an einem Ort gespeichert werden, dass die Benutzer temporäre Dateien oder persönliche Dateien entscheidet, dass die Probleme mit der Anwendung findet, mit, und dies führt zu einer Leistung oder Stabilitätsprobleme.

Ein weiteres Problem, das ich sehe oft die Anwendungsleistung auswirken, ist das Verfahren zum Importieren und Exportieren von Daten in Dateien verwendet. Häufig in Delphi Business-Anwendungen siehe I Export-Funktionen, die Datasets abarbeiten - Iterieren und Schreiben in die Datei. Betrachten Sie das Verfahren zum Schreiben in Datei, betrachten Speicher zur Verfügung, die Ansicht, dass die ‚Ordner‘ to / from las geschrieben werden kann mit der Maschine vor Ort sein, oder es kann auf einem Remote-Server sein.

Es kann ein Entwickler argumentieren, dass diese Probleme bei der Installation sind, außerhalb des Rahmens ihrer Sorge. Ich sehe in der Regel viele Zyklen der Entwickler Analyse auf diese Art von Problem, bevor es als ‚Infrastruktur Problem‘ identifiziert wird.

  • Das erste, was zu tun ist, Auto löschen erstellt Formularliste (suchen Sie nach Projekt Optionen). Erstellen von Formularen on the fly wenn nötig, vor allem, wenn die Anwendung verwendet Datenbankverbindung (Datenmodul) oder Formen, die umfassen die starke Nutzung von Kontrollen.
  • Betrachten Form Vererbung auch zu verringern exe Größe (Ressourcennutzung ist mimized)
  • Anzahl der Formulare verringern und ähnliche oder verwandte Funktionalität in einzelne Form
  • fusionieren

Setzen Sie lange laufende Aufgaben (offene Datenbankverbindungen, eine Verbindung zum Anwendungsserver usw.), die beim Start in einem Thread ausgeführt werden muß. Alle Funktionen, die diese Aufgaben abhängig sind deaktiviert, bis der Thread ausgeführt wird.

Es ist ein bisschen wie ein Betrüger, though. Das Hauptformular sofort kommt, aber du bist nur das Aussehen schneller Startzeit geben.

Komprimieren Sie Ihre ausführbare Datei und alle DLLs mit so etwas wie ASPack oder UPX . Nullzeit ist mehr als durch schnellere Ladezeit aus.

UPX wurde als Beispiel wie FireFox schneller zu laden.

Beachten Sie, dass es Nachteile Kompression exe.

Dies ist nur für die IDE, aber Chris Hesick ein Blog-Posting über Erhöhung der Startleistung unter dem Debugger .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top