Pourquoi y a-t-il un très long retard de 6 secondes au début de Curl

9

J'ai fait une installation complète de Cygwin sur ma machine Windows 7 x64. Après chaque redémarrage de la machine, Curl peut prendre environ 6 secondes pour démarrer (même si aucune option de ligne de commande n'a été spécifiée). Lors des utilisations ultérieures de Curl, il n'y a pas de retard. Il semble qu'une DLL soit en cours d'initialisation ou? Est-ce que quelqu'un d'autre a vu cela et est-ce normal?

user265445
la source
1
Il peut s'agir de la DLL Cygwin qui s'initialise elle-même si aucun processus Cygwin n'a été précédemment démarré. Comment invoquez-vous curl - à partir du shell Windows ou de Cygwin bash? Avez-vous des services Cygwin activés ou des commandes Cygwin qui s'exécutent au démarrage ou à la connexion?
Aaron Miller
Je l'invoque depuis l'invite Windows cmd (pas depuis bash). Je n'ai configuré aucun autre service pour démarrer. J'ai reproduit le problème sur d'autres machines, y compris Windows XP 32 bits, donc je pense que ce pourrait être le temps normal de démarrage, mais je veux le confirmer.
user265445

Réponses:

7

C'est normal; la première fois que la DLL Cygwin s'exécute, elle effectue plusieurs étapes d'initialisation , qui peuvent potentiellement prendre beaucoup de temps, pour configurer l'environnement Cygwin. Cette initialisation se produit la première fois après le démarrage du système qu'un processus Cygwin est créé, et il n'y a malheureusement aucun moyen réel de le contourner.

La meilleure recommandation que je puisse offrir est de modifier votre schéma de démarrage du système, ou vos scripts de connexion, pour créer un processus Cygwin, afin que le temps d'initialisation soit «intégré» à un moment où vous vous attendez déjà à attendre sur le système , plutôt que de se produire plus tard lorsque vous attendez une réponse rapide. Par exemple, vous pouvez ajouter quelque chose comme ce qui suit, en tant que fichier de commandes, à C:\Users\<your username>\AppData\Local\Microsoft\Windows\Start Menu\Programs\Startup:

c:\cygwin\bin\run.exe '/bin/bash -c "ls > /dev/null"'

Cela lancera un processus bash Cygwin qui ne fait rien rapidement, puis se termine, sans afficher de fenêtre sur votre console - forçant ainsi la DLL Cygwin à se charger et à s'initialiser, sans produire d'effets secondaires, et de sorte que lorsque vous ouvrez enfin un invite de commande et exécutez curl, le temps d'initialisation aura déjà eu lieu et vous ne serez pas ennuyé par celui-ci lors de l'exécution de commandes interactives.

Aaron Miller
la source
Merci pour le lien, cela explique le retard que je voyais.
user265445