今天我更新了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