![为什么 Curl 启动时会有长达 6 秒的延迟](https://linux22.com/image/1373796/%E4%B8%BA%E4%BB%80%E4%B9%88%20Curl%20%E5%90%AF%E5%8A%A8%E6%97%B6%E4%BC%9A%E6%9C%89%E9%95%BF%E8%BE%BE%206%20%E7%A7%92%E7%9A%84%E5%BB%B6%E8%BF%9F.png)
我在 Windows 7 x64 计算机上完整安装了 Cygwin。每次重新启动计算机后,Curl 可能需要大约 6 秒才能启动(即使未指定命令行选项)。在后续使用 Curl 时没有延迟。看起来像是正在初始化 DLL 或?有其他人见过这种情况吗?这是正常的吗?
答案1
这是正常的;第一次运行 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 时,初始化时间已经发生,并且在运行交互式命令时您不会因此而烦恼。