只需测试一个非常简单的命令:
while true; do bash -c "echo hello"; done
Run Code Online (Sandbox Code Playgroud)
你会发现Cygwin中的bash有多慢.有人知道为什么吗?
这是win7上cygwin 1.7的全新安装.
感谢Jared的测试理念,我将命令修改为此(添加bash -c):
time for i in {1..10} ; do bash -c "echo Hello" ; done
Hello
...
real 0m7.711s //it's the problem
user 0m0.091s
sys 0m0.476s
Run Code Online (Sandbox Code Playgroud) 我意识到还有一些其他问题,为什么Cygwin显然很慢,但这种情况似乎是独一无二的.
我遇到了一些问题,其中事情报告了很多错误,然后重启后,从bash启动的任何进程都非常慢.老实说,我不知道是什么导致这种情况(我检查了taskmgr中的进程优先级;它仍然正常).
细节:
我在一夜之间运行了一些套接字代码的浸泡测试,并在早上回来发现我的屏幕充满了错误(DialogBoxes - 主要是尝试访问NULL指针)以及发送到命令行的很多东西.我无法捕获相当多的文本(计算机大多没有响应;我不得不手动重启).我确实记得一些引用"Win32错误6"的文本(我假设它意味着无效处理).
重新启动后,大多数事情都很好,但Cygwin/bash仍然没有反应.我按照另一个问题的建议运行了以下内容:
$ time for i in {1..10} ; do bash -c "echo Hello" ; done
...
real 1m12.244s
user 0m3.522s
sys 0m34.460s
Run Code Online (Sandbox Code Playgroud)
对于可怕的速度,不需要调用另一个bash实例:
$ time for i in {1..10}; do ls ; done
# nb there are about 6 entries in pwd
....
real 0m47.718s
user 0m2.568s
sys 0m23.411s
Run Code Online (Sandbox Code Playgroud)
虽然内置确实足够快:
$ time for i in {1..10} ; do echo Hello ; done
....
real 0m0.001s
user 0m0.000s
sys 0m0.000s
Run Code Online (Sandbox Code Playgroud)
更新: 我刚刚实现了在当时和现在之间安装的Windows Update.我很高兴这不是太复杂或任何事情.(虽然,我相信其他同事已经安装了更新,并没有看到问题). …