Подтвердить что ты не робот

Качество вывода MinGW vs Visual Studio 2008

Несколько дней назад мне сказали, что последние версии g++ создают "лучший" x86-код, чем MSVC 2008. В основном GCC с полной оптимизацией создает более быстрые приложения, чем MSVC с полной оптимизацией.

В то время как это конечно правильно утверждать, что это, если это правда, сильно зависит от приложения и используемого кода С++ (и я в процессе оценки этой претензии для своего приложения), мне интересно, что делать другие думают.

В сущности, что было вашим личным опытом при сравнении вывода этих двух компиляторов?

Я спрашиваю о MinGW, но если ваш опыт работы с ванильным GCC каким-то образом действителен здесь, не стесняйтесь делиться этим.

4b9b3361

Ответ 1

Мой опыт заключается в компиляции моего проекта сжатия изображений С++ JPEG-LS. http://charls.codeplex.com

Для меня Visual С++ был значительно быстрее.

Я скомпилировал его в основном с g++ на linux. После большой настройки версия g++ все еще была на 10-15% медленнее на одном и том же оборудовании (тот же физический компьютер, с двойной загрузкой как linux). Это было после многих часов поиска вариантов оптимизации g++, которые действительно помогли. Просто компиляция с оптимизацией по умолчанию g++ была на 60% медленнее, чем Visual С++.

Мой проект, возможно, несколько типичен, потому что это не C, а С++, и требует, чтобы компилятор делал много вложений. В обоих компиляторах я применяю inlining, чтобы произойти.

Кроме того, мне было предложено объяснить, что x86 имеет очень мало регистров, а g++ не подходит для их распределения.

Update:

Для более тщательного сравнения компиляторов microsoft и gnu перейдите в этот тест компилятора C. В соответствии с тем, как я читаю эти цифры, разница между Microsoft и GCC для 32 бит на одном уровне друг с другом, хотя GCC тестируется с оптимизацией на основе профиля (PGO), а Microsoft - нет (в VS Express нет PGO).

Без PGO Microsoft работает быстрее на 32 бит. На 64 бит GCC работает быстрее. Intel все еще быстрее, чем на любой из этих платформ.