MinGW g++从4.5.0更新到4.6.2后的性能损失



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

我的构建命令:

g++ -Ilibsvl-1.5include -IlibSDL-1.2.15include -static-libgcc -static-libstdc++ 
-Ofast -O3 -oecl.exe srcecl.cpp -lmingw32 -lSDLmain -lSDL -std=c++0x

我在Window 64位系统上运行MinGW。

你知道是什么原因导致了糟糕的表现吗?

我的bin文件夹包含一个名为mingw32-gcc-4.5.0的文件。MinGW 4.6发布说明页面上说,它可以用来编译旧版本。不幸的是,g++没有这样的二进制。我读到gcc也可以编译C++,但在我的情况下它不起作用,我只是收到了很多错误。我只是在人们询问如何使用gcc编译C++程序的网站上发现了使用g++的提示。

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

编辑

通过运行2010年下载的旧MinGW安装程序,我成功地再次安装了4.5.0。我将代码和构建批处理文件恢复到昨天的状态。仍然表现不佳。MinGW是否在其安装目录之外安装DLL或其他相关文件?

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

我不确定这是否适用于您的情况,但我听说某些版本的MinGW会在MinGW中查找文件/程序/DLL,即使当前运行的MinGW来自不同的位置。

我不确定这种行为可能适用于哪个版本,但我建议您使用MinGW进行MinGW安装,前提是它是机器上唯一安装的MinGW工具链。


找到了这个建议的来源:

请勿将TDM-GCC安装到"C:\MinGW"!

以前,推荐的路径将MinGW安装在"C:\MinGW"。现在已经不是这样了--因为GCC的其他版本会在该路径中搜索标头和库,即使它们没有安装在那里。TDM-GCC修补以修复此问题,但大多数其他MinGW/GCC发行版没有。这意味着,如果您有更多的MinGW或MinGW-w64,它将始终在"C:\MinGW",则可能会使用错误的标头图书馆。因此,现在建议您使用安装的其他路径。

重新启动是解决方案。它再次适用于4.5.0和4.6.2这两个版本。现在,使用4.6.2编译的二进制文件的性能甚至更好。

在更新MinGW之前,我的程序的性能一直是稳定的,因此我没有想到这是我的系统的问题。

但这就是我们的思维方式:如果两件相关的事情同时发生,我们会认为第一件事会导致第二件事。魔术师正在利用这一事实:P

相关内容

  • 没有找到相关文章

最新更新