运行 a Windows .EXE 通过 Cygwin 本质上比通过 BAT 慢吗?
Is running a Windows .EXE inherently slower via Cygwin than via BAT?
我们正在通过 Cygwin 脚本运行创建 Windows.EXE 文件,但遇到了性能问题。我看过各种关于 Cygwin 性能问题的帖子,包括 this one, one of whose answers 对 Cygwin 内部结构的深入研究,让我认为可能存在问题。然而,这些帖子似乎更多地是关于启动时间、tab 完成等。在我们开始 基准测试之前,我想问一下:Windows 有什么内在原因吗?如果从 Cygwin vs. BAT 启动,EXE 可能 运行 变慢?
不是实际的程序,不是。
内务管理和其他之前 运行 程序可能会有所不同。 Cmd 大概是直接调用 CreateProcess
吧。 Cygwin 的 bash 可能首先进行参数解析、通配符扩展、通过 Cygwin 的缓慢实现进行分叉,然后使用解析后的参数调用 exec
,Cygwin 必须再次拼凑成一个字符串才能传递给 CreateProcess
.但最后,创建了一个不再与其父进程相关的新进程。所以你的程序运行多快完全取决于那个程序,而不是是谁启动的。
我们正在通过 Cygwin 脚本运行创建 Windows.EXE 文件,但遇到了性能问题。我看过各种关于 Cygwin 性能问题的帖子,包括 this one, one of whose answers 对 Cygwin 内部结构的深入研究,让我认为可能存在问题。然而,这些帖子似乎更多地是关于启动时间、tab 完成等。在我们开始 基准测试之前,我想问一下:Windows 有什么内在原因吗?如果从 Cygwin vs. BAT 启动,EXE 可能 运行 变慢?
不是实际的程序,不是。
内务管理和其他之前 运行 程序可能会有所不同。 Cmd 大概是直接调用 CreateProcess
吧。 Cygwin 的 bash 可能首先进行参数解析、通配符扩展、通过 Cygwin 的缓慢实现进行分叉,然后使用解析后的参数调用 exec
,Cygwin 必须再次拼凑成一个字符串才能传递给 CreateProcess
.但最后,创建了一个不再与其父进程相关的新进程。所以你的程序运行多快完全取决于那个程序,而不是是谁启动的。