Hallo Leute,
ich habe ein kleines Performance Problem in meiner Anwendung.
Das Performance Problem sieht derart aus, das das Programm beim Erststart ziemlich langsam startet. Beim erneuten Starten ist die Applikation innerhalb von 4 Sekunden da.
Meine Erklärung hierfür:
Die Anwendung verwendet ca. 15 Assemblies die sehr umfangreich sind. Diese Assemblies müssen beim Erststart alle in den GAC geladen werden. Genau das verbraucht die Zeit. Beim Zweitstart sind alle Assemblies noch im GAC und somit geht der Start sehr schnell.
Bitte korrigiert mich, wenn ich das falsch sehe !
Meine Lösung:
Das Problem ist, ich kann mit dem langsamen Erst-Start NICHT Leben.
Somit meine Lösung: Die Assemblies werden signiert (sharable gemacht). Im Installer meiner Anwendung registriere (gacutil.exe ...) ich alle diese Assemblies.
Meine Frage:
Das sollte mein Performance Problem beim Erst-Start beheben ?
Spricht hier etwas dagegen oder bin ich ggf. ganz auf dem falschen Pfad ?
Gruss
Torsten
Hallo torte,
beim Erststart müssen nicht nur dein Assemblies geladen werden, sondern die komplette .NET-Runtime. Am einfachsten löst du dass, in dem du das Programm vorab einmal startest. Im Ernst. Es kann sich dann ja selbst sofort beenden.
herbivore
Hi herbivore,
mit dem Laden der .NET Runtime muß der Kunde definitiv einfach leben.
Das erstmalige Starten des Programmes bringt in meinen Augen jedoch nicht die Lösung. Die Assemblies werden doch nicht Ewigkeiten im GAC gehalten !
Und wenn der Kunde den Rechner anschaltet und die Applikation startet und die Applikation dann quasi unsichtbar im Hintergrund gestartet und gleich wieder beendet wird ... , muß er im Endeffekt ja trotzdem die volle Zeit warten.
Gruss
Torsten
Hallo torte,
dann musst du die Anwendung die ganze Zeit im Hintergrund laufen lassen. Aber auch dann werden aber im Laufe der Zeit die Assemblies rausgeswappt. Eine zuverlässige Lösung, die in jeder Situation und unter jeder Bedingung einen schnellen Start der Anwendung ermöglicht, gibt es m.E. nicht oder wäre zumindest sehr aufwändig.
herbivore
Erst gacutil, dann ngen.
Und ansonsten - wie herbivore schrieb - einfach die Zahl der Starts auf einen pro Rechnerneustart reduzieren...