Сравнение времени компиляции между Windows GCC и компилятором MSVC

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

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

Введите много ценившее :)

9
задан larsmoa 11 March 2010 в 06:53
поделиться

1 ответ

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

  • Он может отличаться от процессора к процессору. 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.

4
ответ дан 3 November 2019 в 07:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: