Почему в начале керла очень большая 6-секундная задержка

9

Я сделал полную установку Cygwin на моем компьютере с Windows 7 x64. После каждой перезагрузки компьютера запуск Curl может занять около 6 секунд (даже если параметры командной строки не были указаны). При последующем использовании Curl задержки нет. Похоже, что DLL инициализируется или? Кто-нибудь еще видел это и это нормально?

user265445
источник
1
Может быть, Cygwin DLL инициализирует себя, если процессы Cygwin ранее не запускались. Как вы вызываете curl - из оболочки Windows или из Cygwin bash? У вас включены какие-либо службы Cygwin или какие-либо команды Cygwin, которые запускаются при запуске или при входе в систему?
Аарон Миллер
Я вызываю его из командной строки Windows cmd (не из bash). Я не настроил другие сервисы для запуска. Я воспроизвел проблему на других машинах, включая 32-битную Windows XP, поэтому я думаю, что это может быть нормальное время для запуска, но я хочу это подтвердить.
user265445

Ответы:

7

Это нормально; при первом запуске библиотеки Cygwin DLL выполняется несколько шагов инициализации , которые могут занять много времени для настройки среды Cygwin. Эта инициализация происходит в первый раз после загрузки системы, когда создается процесс Cygwin, и, к сожалению, реального пути обхода нет.

Лучшая рекомендация, которую я могу предложить, - это изменить схему запуска системы или сценарии входа в систему, чтобы создать процесс Cygwin, чтобы время инициализации «затягивалось» в тот момент, когда вы уже ожидаете ожидания в системе. вместо того, чтобы происходить позже, когда вы ожидаете быстрого ответа. Например, вы можете добавить что-то вроде следующего в виде командного файла C:\Users\<your username>\AppData\Local\Microsoft\Windows\Start Menu\Programs\Startup:

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

Это запустит процесс Cygwin bash, который довольно быстро ничего не делает, а затем завершает свою работу, не отображая окно на вашей консоли - таким образом, заставляя библиотеку Cygwin DLL загружаться и инициализировать себя, не вызывая каких-либо побочных эффектов, и, таким образом, когда вы наконец откроете В командной строке и запустите curl, время инициализации уже наступит, и вы не будете раздражены при выполнении интерактивных команд.

Аарон Миллер
источник
Спасибо за ссылку, которая объясняет задержку, которую я видел.
user265445