2012-02-16 59 views
1

今天我更新了MinGW并重建了我当前的C++项目。自从使用4.5.0以来,我已经记录了计时信息,并且在使用4.6.2编译时看到了巨大的性能损失(大约慢了4倍)。从4.5.0更新到4.6.2后MinGW g ++性能下降

我的集结命令:

g++ -Ilib\svl-1.5\include -Ilib\SDL-1.2.15\include -static-libgcc -static-libstdc++ \ 
-Ofast -O3 -oecl.exe src\ecl.cpp -lmingw32 -lSDLmain -lSDL -std=c++0x 

我是一个窗口64位系统上运行的MinGW。

你有什么想法是什么原因导致了糟糕的表现?

我的bin文件夹包含一个名为mingw32-gcc-4.5.0的文件。 MinGW 4.6 release notes page表示可以用它来编译旧版本。不幸的是,g ++没有这样的二进制文件。我读过gcc也能够编译C++,但在我的情况下它不起作用,我只是得到大量的错误。我只发现在人们问如何使用gcc编译C++程序的网站上使用g ++的提示。

有没有办法让我的C++程序使用mingw32-gcc-4.5.0编译?如果没有,是否有另一种使用版本4.5.0进行编译的方法? 我想确保不好的性能不是由我的代码中的更改引起的。

编辑

我设法运行我的老MinGW的安装程序在2010年再次下载安装4.5.0我恢复了我的代码和构建批处理文件来昨天的状态。表现依然不佳。 MinGW是否在其安装目录之外安装DLL或其他相关文件?

+2

那么在老版本的基础上还有一个0.1.2的额外完整版。 – Dennis 2012-02-16 16:06:26

+0

如果您可以尝试确定性能下降的原因,可能对其他人(以及您自己)有所帮助。 – 2012-02-16 19:02:14

回答

0

重新启动是解决方案。它同时适用于4.5.0和4.6.2两个版本。现在用4.6.2编译的binaray性能更好。

在更新MinGW之前,我的程序的性能一直保持稳定,因此我没有想到这是我的系统出现问题。但是这就是我们的思维方式:如果两个相关的事情同时发生,我们认为第一件事情导致第二件事情发生。魔术师正在利用这个事实:P

2

MinGW是否在安装目录之外安装DLL或其他相关文件?

我不知道这是否会适用于您的情况,但我听说的MinGW的一些版本将查找\MinGW的文件/程序/ DLL文件,即使当前运行的MinGW是从不同的位置。

我不确定此行为可能适用于什么版本,但是我建议您只有在机器上安装了唯一的MinGW工具链时才使用\MinGW作为MinGW安装。


找到the source of this advice

不要安装TDM-GCC到 “C:\ MinGW的”!

以前,安装MinGW的推荐路径 是“C:\ MinGW”。这不再是这种情况 - ,因为其他版本的GCC搜索标题的路径和 库,即使它们没有安装在那里。 TDM-GCC已经修补了 来解决这个问题,但大多数其他MinGW/GCC发行版 都没有。这意味着如果你有更多的安装 MinGW或MinGW-w64,它总是会搜索 “C:\ MinGW”中的头文件和库,并且您可能最终会无意中使用错误的头文件和 库。因此,现在建议您使用 不同的路径进行安装。

+1

+1,这对其他具有相同问题的开发者会很有用。但是,我没有安装到C:\ MinGW – fishbone 2012-02-17 11:09:42