¿Por qué hay un retraso muy largo de 6 segundos en el inicio de Curl?

9

Hice una instalación completa de Cygwin en mi máquina Windows 7 x64. Después de reiniciar cada máquina, Curl puede tardar unos 6 segundos en iniciarse (incluso si no se especificaron opciones de línea de comando). En usos posteriores de Curl no hay demora. Parece que se está inicializando una DLL o? ¿Alguien más ha visto eso y es esto normal?

usuario265445
fuente
1
Podría ser la DLL de Cygwin que se inicializa si no se han iniciado procesos de Cygwin anteriormente. ¿Cómo invocas curl, desde el shell de Windows o desde Cygwin bash? ¿Tiene habilitado algún servicio de Cygwin o algún comando de Cygwin que se ejecute al inicio o al iniciar sesión?
Aaron Miller
Lo invoco desde el indicador de cmd de Windows (no desde bash). No he configurado ningún otro servicio para comenzar. He reproducido el problema en otras máquinas, incluido Windows XP de 32 bits, así que creo que podría ser el momento normal de inicio, pero quiero confirmarlo.
user265445

Respuestas:

7

Esto es normal; la primera vez que se ejecuta Cygwin DLL, realiza varios pasos de inicialización , que pueden llevar mucho tiempo, para configurar el entorno Cygwin. Esta inicialización ocurre la primera vez después del inicio del sistema que se crea un proceso Cygwin, y desafortunadamente no hay una forma real de evitarlo.

La mejor recomendación que puedo ofrecer es modificar el esquema de inicio de su sistema, o sus scripts de inicio de sesión, para crear un proceso Cygwin, de modo que el tiempo de inicialización se "incorpore" en un punto en el que ya espera estar esperando en el sistema , en lugar de ocurrir más adelante cuando esperas una respuesta rápida. Por ejemplo, puede agregar algo como lo siguiente, como un archivo por lotes, a C:\Users\<your username>\AppData\Local\Microsoft\Windows\Start Menu\Programs\Startup:

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

Esto iniciará un proceso de Cygwin bash que no hace nada rápidamente y luego se cierra, sin mostrar una ventana en su consola, lo que obliga a Cygwin DLL a cargarse e inicializarse, sin producir ningún efecto secundario, y así cuando finalmente abra un símbolo del sistema y ejecutar curl, el tiempo de inicialización ya habrá ocurrido, y no te molestará mientras ejecutas comandos interactivos.

Aaron Miller
fuente
Gracias por el enlace, eso explica la demora que estaba viendo.
user265445