MinGW C++ vs VS2013 C++, performance difference

592 Views Asked by At

I am developing a library for power systems simulation, for which the execution time is critical.

I created Netbeans (MinGW) and Visual studio projects.

I compiled the library in both environments and I created a project to run a main.cpp file using the library.

I found that, with the exact same code, the MinGW compiler produces a program that runs about twice as fast than the Visual studio one.

The visual studio one is compiled for 64 bits, while the MinGW is compiled for 32 bits.

Can anydoby explain to me why one is much faster that the other?

PS: the full code can be found at:https://sourceforge.net/p/fpotencia/code/ci/master/tree/

{EDIT}-----------------

VS output:

1>------ Rebuild All started: Project: fPotencia, Configuration: Debug Win32 ------
1>  Transformer.cpp
1>  Solver_ZBlockSubs.cpp
1>d:\c++\fpotencia\src\solver_zblocksubs.cpp(55): warning C4018: '<' : signed/unsigned mismatch
1>d:\c++\fpotencia\src\solver_zblocksubs.cpp(59): warning C4018: '<' : signed/unsigned mismatch
1>d:\c++\fpotencia\src\solver_zblocksubs.cpp(81): warning C4018: '<' : signed/unsigned mismatch
1>d:\c++\fpotencia\src\solver_zblocksubs.cpp(94): warning C4018: '<' : signed/unsigned mismatch
1>d:\c++\fpotencia\src\solver_zblocksubs.cpp(121): warning C4018: '<' : signed/unsigned mismatch
1>d:\c++\fpotencia\src\solver_zblocksubs.cpp(128): warning C4018: '<' : signed/unsigned mismatch
1>d:\c++\fpotencia\src\solver_zblocksubs.cpp(147): warning C4018: '<' : signed/unsigned mismatch
1>d:\c++\fpotencia\src\solver_zblocksubs.cpp(165): warning C4018: '<' : signed/unsigned mismatch
1>d:\c++\fpotencia\src\solver_zblocksubs.cpp(182): warning C4018: '<' : signed/unsigned mismatch
1>d:\c++\fpotencia\src\solver_zblocksubs.cpp(184): warning C4018: '<' : signed/unsigned mismatch
1>d:\c++\fpotencia\src\solver_zblocksubs.cpp(211): warning C4018: '<' : signed/unsigned mismatch
1>  Solution.cpp
1>  Shunt.cpp
1>  Load.cpp
1>  Line.cpp
1>  Generator.cpp
1>  ExternalGrid.cpp
1>  Circuit.cpp
1>d:\c++\fpotencia\src\circuit.cpp(125): warning C4018: '<' : signed/unsigned mismatch
1>d:\c++\fpotencia\src\circuit.cpp(132): warning C4018: '<' : signed/unsigned mismatch
1>d:\c++\fpotencia\src\circuit.cpp(155): warning C4018: '<' : signed/unsigned mismatch
1>d:\c++\fpotencia\src\circuit.cpp(162): warning C4018: '<' : signed/unsigned mismatch
1>d:\c++\fpotencia\src\circuit.cpp(460): warning C4018: '<' : signed/unsigned mismatch
1>d:\c++\fpotencia\src\circuit.cpp(463): warning C4018: '<' : signed/unsigned mismatch
1>d:\c++\fpotencia\src\circuit.cpp(466): warning C4018: '<' : signed/unsigned mismatch
1>d:\c++\fpotencia\src\circuit.cpp(469): warning C4018: '<' : signed/unsigned mismatch
1>d:\c++\fpotencia\src\circuit.cpp(506): warning C4018: '<' : signed/unsigned mismatch
1>  Bus.cpp
1>  Generating Code...
1>d:\c++\fpotencia\src\circuit.cpp(74): warning C4715: 'fPotencia::Circuit::find_bus' : not all control paths return a value
1>  fPotencia.vcxproj -> D:\C++\fPotencia\Windows\VisualStudio\fPotencia\Debug\fPotencia.lib
2>------ Rebuild All started: Project: fPotencia_test, Configuration: Debug Win32 ------
2>  main.cpp
2>d:\c++\fpotencia\src\test\main.cpp(189): warning C4101: 'k' : unreferenced local variable
2>  fPotencia_test.vcxproj -> D:\C++\fPotencia\Windows\VisualStudio\fPotencia\Debug\fPotencia_test.exe
========== Rebuild All: 2 succeeded, 0 failed, 0 skipped ==========

Netbeans output:

"/C/MinGW/MSYS/1.0/bin/make.exe" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make.exe[1]: Entering directory `/d/C++/fPotencia/Windows/Netbeans/fPotencia_test'
"/C/MinGW/MSYS/1.0/bin/make.exe"  -f nbproject/Makefile-Debug.mk dist/Debug/MinGW-Windows/fpotencia_test.exe
make.exe[2]: Entering directory `/d/C++/fPotencia/Windows/Netbeans/fPotencia_test'
mkdir -p build/Debug/MinGW-Windows/_ext/608944044
rm -f "build/Debug/MinGW-Windows/_ext/608944044/main.o.d"
g++    -c -g -I../../../src -I../../../libs -std=c++11 -MMD -MP -MF "build/Debug/MinGW-Windows/_ext/608944044/main.o.d" -o build/Debug/MinGW-Windows/_ext/608944044/main.o ../../../src/test/main.cpp
mkdir -p dist/Debug/MinGW-Windows
g++     -o dist/Debug/MinGW-Windows/fpotencia_test build/Debug/MinGW-Windows/_ext/608944044/main.o ../fPotencia/dist/Debug/MinGW-Windows/libfpotencia.a
make.exe[2]: Leaving directory `/d/C++/fPotencia/Windows/Netbeans/fPotencia_test'
make.exe[1]: Leaving directory `/d/C++/fPotencia/Windows/Netbeans/fPotencia_test'
0

There are 0 best solutions below