Сравнение времени компиляции между Windows GCC и компилятором MSVC - PullRequest
9 голосов
/ 11 марта 2010

Мы работаем над сокращением времени компиляции в Windows и поэтому рассматриваем все варианты. Я попытался найти в Google сравнение между временем компиляции с использованием GCC (MinGW или Cygwin) и компилятора MSVC (CL) без какой-либо удачи. Конечно, сравнивать не сложно, но я бы предпочел не изобретать велосипед, если смогу.

Кто-нибудь знает о таком сравнении? Или, может быть, у кого-то есть практический опыт?

Вклад очень ценится:)

1 Ответ

4 голосов
/ 11 марта 2010

Сравнение компилятора не тривиально:

  • Может варьироваться от процессора к процессору.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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...