Même l'application la plus basique avec une fenêtre simple prend plusieurs secondes pour démarrer alors que son équivalent Win32 se charge en une fraction de seconde. J'ai lu que le retard n'est pas dû au temps qu'il faut au JIT pour transformer l'opcode en code machine, mais plutôt au temps que Windows prend pour charger le framework .Net.Pourquoi les applications .Net sont-elles plus lentes à démarrer?
Ainsi, en utilisant MS » tasklist.exe l'application CLI, j'ai vérifié si mscoree.dll était déjà chargé:
C:\>tasklist /m mscoree.dll
Image Name PID Modules
========================= ====== =====================
explorer.exe 368 mscoree.dll
BSQLServer.exe 652 mscoree.dll
TOTALCMD.EXE 408 mscoree.dll
Uedit32.exe 260 mscoree.dll
OUTLOOK.EXE 1912 mscoree.dll
Ensuite, j'ai couru ma demande de base avec juste un bouton OK, mais il a fallu quelques secondes pour être affichée.
En supposant que mscoree.dll est en effet la preuve que .Net est chargé, au moins pour gérer Windows de base, alors pourquoi le retard? FWIW, c'est sur un hôte XPSP3.
Même si le framework .Net entier est chargé pour chaque processus, étant donné qu'il est déjà opérationnel pour d'autres processus, je suppose qu'il va simplement copier le code de ces autres processus dans la RAM?
Merci.
Edit: Il semble que le temps de démarrage initial plus lent est dû à l'utilisation d'une application antivirus/pare-feu, pas au .Net JIT ou le chargement. Autre problème possible: Si votre application est un peu lente à démarrer à partir d'un état froid, assurez-vous qu'elle ne charge que le strict minimum au démarrage.
Comment utilisez-vous l'application, et quel type d'application est-il? Avez-vous essayé une application console simple, exécutée à partir de la ligne de commande (juste comme un test minimal)? –
Vous pouvez essayer d'utiliser [Process Monitor] (http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx) pour voir ce qui se passe réellement jusqu'à ce que vous voyiez l'interface utilisateur de l'application. Cela inclut des événements tels que le chargement de la DLL, l'accès au fichier et/ou au réseau. –
Difficile de répondre en raison de l'information apparemment contradictoire/incorrecte dans la question. Qui vous a dit que le retard initial n'est pas dû à JIT? –