通过Cygwin运行Windows .EXE比通过BAT本地运行慢吗?

5
我们正在通过 Cygwin 脚本运行 Windows .EXE 文件时遇到性能问题。我看到了有关 Cygwin 性能问题的各种帖子,包括这个,其中一个答案深入了解了 Cygwin 的内部情况,让我认为可能存在问题。然而,这些帖子似乎更多地涉及启动时间、选项完成等问题。在我们开始进行基准测试之前,我想问一下:从 Cygwin vs.BAT 启动 Windows .EXE,是否存在任何固有原因导致运行速度变慢?

1
如果您看到高CPU负载,那可能表示有一个失控的线程,这可能是由于您的程序中的某个错误与Cygwin启动它的方式之间的差异相结合导致的。 - Harry Johnston
1个回答

3

不是实际的程序。

在运行程序之前的清理和设置可能会有所不同。Cmd 可能直接调用 CreateProcess。Cygwin 的 bash 可能首先进行参数解析、通配符扩展,通过 Cygwin 的慢实现进行 fork 并使用解析出的参数调用 exec,然后 Cygwin 必须将其重新组合成一个字符串再传递给 CreateProcess。但最终,将创建一个新进程,该进程与其父进程没有任何关系。因此,您的程序运行速度完全取决于程序本身,而不取决于启动它的人。


没有区别,例如标准处理方式的设置? - Harry Johnston
1
@HarryJohnston:我不知道,但那只会影响通过它们进行的输入和输出,而不会影响程序运行的速度,对吧? - Joey
1
通常是这样,但一个足够有缺陷的程序可能会根据标准句柄而表现出不同的行为。这不会是我的第一选择,甚至不是第二选择,但我也不会完全排除这种可能性。 :-) - Harry Johnston
2
@HarryJohnston:嗯,总会有像这样的情况;-)。 - Joey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接