Сравнение компилятора не тривиально:
- Может варьироваться от процессора к процессору.GCC может лучше оптимизировать для i7 и MSVC для Core 2 Duo или наоборот.Производительность может зависеть от кэша и т. Д. (Разверните циклы или не разверните циклы, вот в чем вопрос;)).
- Очень сильно зависит от того, как написан код.Определенные идиомы (эквивалентные друг другу) могут быть предпочтительными для одного компилятора.
- Это зависит от того, как используется код.
- Это зависит от флагов.Например, известно, что gcc
-O3
часто генерирует более медленный код, чем -O2
или -Os
. - Это зависит от того, что можно сделать в отношении кода.Вы можете разрешить строгий псевдоним или нет (
-fno-strict-aliasing
/ -fstrict-aliasing
в gcc).Вам нужен полный IEEE 754 или вы можете изменить правила вычисления плавающего указателя (-ffast-math
). - Это также зависит от конкретных расширений процессора.Вы включаете MMX / SSE или нет.Вы используете встроенные или нет.Вы полагаете, что код совместим с i386 или нет.
- Какая версия gcc?Какая версия msvc?
- Используете ли вы какие-либо расширения gcc / msvc?
- Используете ли вы микробенчмаркинг или макробенчмаркинг?
И в конце вы найдетеиз-за того, что результат был меньше статистической ошибки;)
Даже если используется одно приложение, результат может быть неубедительным (функция A работает лучше в gcc, но B в msvc).
PS.Я бы сказал, что Cygwin будет медленнее, поскольку у него есть дополнительный уровень косвенности между POSIX и WinAPI.