Dlaczego na początku Curl występuje bardzo długie 6 sekundowe opóźnienie?

9

Zrobiłem pełną instalację Cygwin na moim komputerze z systemem Windows 7 x64. Po każdym ponownym uruchomieniu komputera Curl może uruchomić się około 6 sekund (nawet jeśli nie określono opcji wiersza poleceń). Przy kolejnych zastosowaniach Curl nie ma opóźnienia. Wygląda na to, że inicjowana jest biblioteka DLL lub? Czy ktoś jeszcze to widział i czy to normalne?

użytkownik265445
źródło
1
Może to być inicjalizacja samej biblioteki DLL Cygwin, jeśli wcześniej nie uruchomiono żadnych procesów Cygwin. Jak wywołujesz curl - z powłoki Windows lub z bash Cygwin? Czy masz włączone usługi Cygwin lub jakieś polecenia Cygwin, które działają podczas uruchamiania lub logowania?
Aaron Miller,
Wywołuję go z wiersza polecenia systemu Windows (nie z bash). Nie skonfigurowałem żadnych innych usług do uruchomienia. Problem został odtworzony na innych komputerach, w tym 32-bitowym systemie Windows XP, więc myślę, że może to być normalny czas na uruchomienie, ale chcę to potwierdzić.
user265445,

Odpowiedzi:

7

To normalne; przy pierwszym uruchomieniu DLL Cygwin wykonuje kilka kroków inicjalizacji , które mogą być czasochłonne, aby skonfigurować środowisko Cygwin. Ta inicjalizacja ma miejsce po raz pierwszy po uruchomieniu systemu, gdy tworzony jest proces Cygwin, i niestety nie ma realnego sposobu na obejście tego.

Najlepszą rekomendacją, jaką mogę zaoferować, jest zmodyfikowanie schematu uruchamiania systemu lub skryptów logowania, aby utworzyć proces Cygwin, tak aby czas inicjalizacji został „zwinięty” w momencie, w którym spodziewasz się już czekać na system , zamiast pojawiać się później, gdy oczekujesz szybkiej odpowiedzi. Na przykład możesz dodać coś takiego jak: plik wsadowy, do C:\Users\<your username>\AppData\Local\Microsoft\Windows\Start Menu\Programs\Startup:

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

Spowoduje to uruchomienie procesu bash w Cygwin, który dość szybko nic nie robi, a następnie kończy działanie, bez wyświetlania okna na konsoli - w ten sposób zmuszając bibliotekę Cygwin do ładowania i inicjalizacji, bez wywoływania żadnych skutków ubocznych, i tak, że kiedy w końcu otworzysz wiersz polecenia i uruchom curl, czas inicjalizacji już miał miejsce i nie będziesz go denerwować podczas uruchamiania interaktywnych poleceń.

Aaron Miller
źródło
Dzięki za link, który wyjaśnia opóźnienie, które widziałem.
user265445,