Warum gibt es eine sehr lange Verzögerung von 6 Sekunden beim Start von Curl?

9

Ich habe Cygwin vollständig auf meinem Windows 7 x64-Computer installiert. Nach jedem Neustart des Computers kann der Start von Curl etwa 6 Sekunden dauern (auch wenn keine Befehlszeilenoptionen angegeben wurden). Bei späteren Verwendungen von Curl gibt es keine Verzögerung. Es sieht so aus, als würde eine DLL initialisiert oder? Hat das noch jemand gesehen und ist das normal?

user265445
quelle
1
Könnte die Cygwin-DLL sein, die sich selbst initialisiert, wenn zuvor keine Cygwin-Prozesse gestartet wurden. Wie rufen Sie Curl auf - über die Windows-Shell oder über Cygwin Bash? Haben Sie Cygwin-Dienste aktiviert oder Cygwin-Befehle, die beim Start oder bei der Anmeldung ausgeführt werden?
Aaron Miller
Ich rufe es über die Windows-Cmd-Eingabeaufforderung auf (nicht über Bash). Ich habe keine anderen Dienste zum Starten konfiguriert. Ich habe das Problem auf anderen Computern einschließlich 32-Bit-Windows XP reproduziert, daher denke ich, dass es möglicherweise die normale Zeit zum Starten ist, aber ich möchte dies bestätigen.
user265445

Antworten:

7

Das ist normal; Bei der ersten Ausführung der Cygwin-DLL werden mehrere Initialisierungsschritte ausgeführt , die möglicherweise zeitaufwändig sein können, um die Cygwin-Umgebung einzurichten. Diese Initialisierung erfolgt zum ersten Mal nach dem Systemstart, wenn ein Cygwin-Prozess erstellt wird, und es gibt leider keinen wirklichen Weg daran vorbei.

Die beste Empfehlung, die ich anbieten kann, besteht darin, Ihr Systemstartschema oder Ihre Anmeldeskripts zu ändern, um einen Cygwin-Prozess zu erstellen, sodass die Initialisierungszeit zu einem Zeitpunkt "eingerollt" wird, an dem Sie bereits damit rechnen, auf das System zu warten , anstatt später aufzutreten, wenn Sie eine schnelle Antwort erwarten. Beispielsweise können Sie als Batch-Datei Folgendes hinzufügen C:\Users\<your username>\AppData\Local\Microsoft\Windows\Start Menu\Programs\Startup:

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

Dadurch wird ein Cygwin-Bash-Prozess gestartet, der ziemlich schnell nichts bewirkt und dann beendet wird, ohne dass ein Fenster auf Ihrer Konsole angezeigt wird. Dadurch wird die Cygwin-DLL gezwungen, sich selbst zu laden und zu initialisieren, ohne Nebenwirkungen zu verursachen Eingabeaufforderung und Curl ausführen, die Initialisierungszeit ist bereits eingetreten, und Sie werden sich beim Ausführen interaktiver Befehle nicht darüber ärgern.

Aaron Miller
quelle
Vielen Dank für den Link, der die Verzögerung erklärt, die ich gesehen habe.
user265445