只是测试一个非常简单的命令,如:为什么Cygwin非常缓慢地执行shell命令?
while true; do bash -c "echo hello"; done
你会发现在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
也许麻烦在于Windows 7无法快速创建进程? –
Windows无法* fork *进程非常快。事实上,它根本就没有“叉”。 Cygwin欺骗它,但不能像真正的* nix那样高效地在任何地方做到。每个进程都从头开始,并且必须加载并初始化fork-and-go系统已经加载的cygwin DLL,libc等。 – cHao
但奇怪的是,在创建10个进程大约7.7秒的命令期间,CPU为空,您可以看到用户&sys时间稍微有点短。看起来bash正在等待什么,但是它还在等什么呢? – Lcsky