通过 Cygwin 运行 Windows .EXE 本身是不是比通过 BAT 慢?
Posted
技术标签:
【中文标题】通过 Cygwin 运行 Windows .EXE 本身是不是比通过 BAT 慢?【英文标题】:Is running a Windows .EXE inherently slower via Cygwin than via BAT?通过 Cygwin 运行 Windows .EXE 本身是否比通过 BAT 慢? 【发布时间】:2017-04-27 12:59:15 【问题描述】:我们正在通过 Cygwin 脚本运行 Windows .EXE 文件并遇到性能问题。我看过各种关于 Cygwin 性能问题的帖子,包括 this one,其中一个 answers 深入研究了 Cygwin 内部,让我认为可能存在问题。然而,这些帖子似乎更多地是关于启动时间、选项卡完成等。在我们开始进行基准测试之前,我想问一下:如果从Cygwin 与 BAT?
【问题讨论】:
如果您看到高 CPU 负载,这可能表明线程失控,这可能是由于您的程序中的错误以及 Cygwin 启动它的方式的一些差异引起的。 【参考方案1】:不是实际的程序,不是。
家务和东西之前运行程序可能会有所不同。 Cmd 可能直接调用CreateProcess
。 Cygwin 的 bash 可能首先进行参数解析、通配符扩展、通过 Cygwin 的缓慢实现进行分叉,并使用解析的参数调用 exec
,Cygwin 必须再次将其拼凑成一个字符串以传递给 CreateProcess
。但最终,创建了一个与其父进程没有任何联系的新进程。因此,您的程序运行速度完全取决于该程序,而不是由谁启动它。
【讨论】:
没有区别,例如标准句柄的设置方式? @HarryJohnston:我不知道,但这只会影响通过它们的输入和输出,不会影响程序运行的速度,不是吗? 通常情况下,是的,但是一个有足够缺陷的程序可能会根据标准句柄表现不同。这不会是我的第一个甚至第二个猜测,但我不会完全排除它。 :-) @HarryJohnston:嗯,总会有像these ;-) 这样的情况。以上是关于通过 Cygwin 运行 Windows .EXE 本身是不是比通过 BAT 慢?的主要内容,如果未能解决你的问题,请参考以下文章
Windows - 使用 mingw 进行 pip 安装 - 失败 - cc1.exe:错误:无法识别的命令行选项“-mno-cygwin”