首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么MinGW非常慢?

为什么MinGW非常慢?
EN

Stack Overflow用户
提问于 2009-05-30 10:25:29
回答 4查看 30.1K关注 0票数 33

我在Windows上使用的是Code::Blocks和GCC/MinGW,并且我正在尝试构建一个大约有20k行和40个源模块的wxWidgets应用程序。而且它的构建速度非常非常慢。

编译一个C++模块需要2-5秒,链接甚至需要2-3分钟。

这是一段可移植的代码,并且在Linux上编译速度非常快。我不能跟随构建消息窗口...整个过程持续不到20秒。

我尝试了常见的调整(例如,预编译头、关闭优化等),但都不起作用。

为什么它这么慢?

EN

回答 4

Stack Overflow用户

发布于 2009-12-09 00:43:24

您是否在Active Directory域中,但没有立即连接到该域?

虽然我不知道为什么MinGW会很慢,但我的经验是,属于AD域的计算机,但无法到达AD控制器,在启动可执行文件(如rxvt.exe)时出现延迟,并且当前正在运行的计算机遇到暂停或卡顿(如使用MinGW构建的emacs )。

我仍在调查以确定此行为的实际原因,但我想我会提到它,以防它适用于您。

票数 19
EN

Stack Overflow用户

发布于 2017-05-07 18:08:17

MSYS 1.0.19-1开始,如果用户帐户在Active Directory域中,并且域控制器(DC)无法访问,则在启动任何MSYS可执行文件(使用MSYS DLL)之前,MSYS DLL将引入较长的延迟。这会影响MSYS make和CoreUtils包中的所有命令行实用程序,如lsrm等,这些工具通常安装在C:\MinGW\msys\1.0\bin中。

观察结果:

  • 从MSYS bash外壳启动实用程序时,只有外壳的启动会受到延迟的影响。从外壳启动的实用程序不会受到影响。从外壳启动的工具延迟可能会有所不同,在我的情况下,它是在延迟的命令启动后10-20秒内21sec.
  • Running任何MSYS实用程序没有新的delay.
  • Problem发生当计算机连接到不同的网络,或当断开域连接,或当域控制器主机名更改(在我的情况下是问题)
  • 实用程序。要检查DC是否可访问,请打开cmd并键入echo %LOGONSERVER%,然后键入ping或包含DC主机名的net view

为什么它会这么慢:

  • uinfo.cc internal_getlogin()中的MSYS DLL代码进行了两次系统调用来获取用户信息。它第一次调用NetUserGetInfo()从本地计算机检索用户帐户。对于域用户,它会失败,因此它使用从LOGONSERVER变量获取的DC服务器第二次调用它。如果无法立即访问此主机,它将引入很长的延迟,直到呼叫因超时而失败。应用程序将在稍后启动。

如何避免此问题,有几种解决方法:

  • 或者从MSYS shell运行所有内容,或者
  • 如果原因是DC主机名更改,则重新启动或重新登录将解决此问题。Windows将使用正确的DC主机自动更新LOGONSERVER
  • 如果从Windows cmd或脚本调用MSYS工具,请将LOGONSERVER设置为本地主机以避免网络访问。例如,set LOGONSERVER=\\LOCALHOST为我工作。注意:这个变量是在登录时设置的,与在cmd或脚本中设置相比,在Windows环境变量窗口中全局更改它没有任何效果。
  • 我认为这是MinGW/MSYS中的一个错误。MSYS2和Cygwin中的代码是不同的。我检查了MSYS2,它没有这样的问题。
票数 15
EN

Stack Overflow用户

发布于 2015-04-21 16:18:31

因为MinGW没有fork(),所以Windows上的许多“单一”的东西都慢得令人痛苦。Windows只有CreateProcess(),这是非常不同的。Unix shell和GNU Make做了大量的分支,所以在MinGW下运行这些分支会导致“模拟”的分支,这真的很慢。

另一个受此影响的是GNU Autotools,因此在从源代码构建"unixy“应用程序时运行./configure脚本也非常慢。如果您需要多次这样做(例如,在获取配置以查找所有库时遇到问题),这可能会变得非常恼人。

This answer更详细地解释了Cygwin和MinGW 如何使用模拟fork()this answer有更多最新的解释。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/929495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档