【发布时间】:2012-06-17 10:20:29
【问题描述】:
我在 Ubuntu 上运行了一个脚本,并测试了它的时间:
$ time ./merger
./merger 0.02s user 0.03s system 99% cpu 0.050 total
它花费了不到 1 秒的时间。 但如果我使用 cygwin:
$ time ./merger
real 3m22.407s
user 0m0.367s
sys 0m0.354s
耗时超过 3 分钟。 为什么会这样?如何提高cygwin的执行速度?
【问题讨论】:
-
与 Linux 相比,Windows 上的生成进程非常慢 - cygwin 无法解决这个限制。
-
检查this是否有帮助。
-
这不仅仅是进程的产生,而是
fork的模拟使Cygwin 如此缓慢。fork是 Win32 API 本身不支持的东西,所以它必须做很多hackery 和复制才能获得与 POSIX 下相同的效果(通常这是通过复制页表并使页面复制来完成 - on-write,就是这样)。 -
你能给我们看看代码吗?你用什么语言?它是一个 bash 脚本吗?它有一个大循环吗?没有更多信息很难帮助你,@PaulR 是对的,AFAIK 分叉很慢,在某些情况下甚至经常失败