Windows x86/x64 - MinGW vs. ICC - Performance significantly worse

Windows x86/x64 - MinGW vs. ICC - Performance significantly worse


I am currently running a computationally intensive application on Linux and Windows on x86 and x86_64. My expectation was that by switching from GCC/MinGW to ICC the overall runtime of the application would decrease. While this turned out to be very true on Linux I got the opposite effect on Windows. A few more facts:

The application is called infernal ( and searches DNA sequence databases.

Compiler Versions:
Linux: ICC 11.1.073, GCC 4.3.4
Windows: ICC 11.1.067, MinGW 4.6.0

Compiler Flags:
Linux: ICC (-m64 -O2 -static -msse2 -funroll-loops -g0), GCC (-m64 -O2 -static -msse2)
Windows: ICC (/Qstd=c99 /O2 /arch:SSE2 /MT /Qunroll), MinGW (-m64 -O2 -static -msse2)

The following numbers show the average runtime of the application for a specific input on the same hardware for both operating systems (numbers are in seconds):

Linux: ICC (5880), GCC (6158) => 4.5% better
Windows: ICC (6042), MinGW (4938) => 22.4% worse

I made quite a few tests with different input data and the result is almost always the same: On Linux, the ICC compiled binary is about 5% to 10% faster, on Windows, the ICC compiled binary is sometimes even more than 40% slower.

I know that it might not really be a fair comparison, also given the fact that the versions for both ICC and GCC/MinGW are not identical, but I was wondering whether you have any explanation for this behavior.

If you need more information I'll be glad to provide you with more details.

Thanks, Tilman

1 post / 0 new
For more complete information about compiler optimizations, see our Optimization Notice.