Вот краткий ответ относительно G CC - на их домашнем веб-сайте имеется обширный список различных результатов тестов.
Например, глядя на конкретный c прогон теста OOPACK с помощью Charles Leggett :
Ядра OOPACK состоят из 4 программ для измерения относительная производительность компиляторов C ++ против C компиляторов для абстрактных типов данных. Ядра построены таким образом, что они могут быть закодированы в C или C ++. Программы C компилируются компилятором C ++.
Ядра состоят из:
- Макс измеряет, насколько хорошо компилятор вставляет простое условное выражение.
- Матрица измеряет, насколько хорошо компилятор распространяет константы и поднимает простые инварианты.
- Итератор измеряет, насколько хорошо компилятор включает недолговечные небольшие объекты.
- Комплекс измеряет, насколько хорошо компилятор устраняет временные потери.
Один из выводов гласит:
г cc Оптимизировано C несколько улучшилось между 2,91,66 и 3x
Как и ожидалось, быстрый взгляд на некоторые другие критерии также, кажется, поддерживает повествование о том, что «чем новее, тем лучше».
Принимая во внимание категории из "Целей проектирования и разработки", перечисленных в G CC Заявлении о целях развития , причины улучшений можно отнести к одной из трех:
- Новые оптимизации
- Улучшенные библиотеки времени выполнения
- Различные другие улучшения инфраструктуры
Важно отметить, что другие цели включают " новые языки "и" новые цели "- таким образом, актуальность новой версии будет зависеть от вашего варианта использования.
Более того, читая о критериях выпуска - я бы предостерег от возможного введения в заблуждение, говоря о «лучшей производительности» в целом, поскольку конструкции компиляторов идут со многими компромиссами:
В отличие от большинства проблем с корректностью, в которых нет ничего, кроме правильного, разумно менять поведение на качество кода и время компиляции. Например, это может быть приемлемо при компиляции с оптимизацией, если компилятор работает медленнее, но генерирует улучшенный код. Также может быть приемлемо, чтобы компилятор генерировал худший код в некоторых тестовых примерах, если он генерирует существенно более качественный код в других тестовых примерах.
Таким образом, особенно в нишевых и критичных к производительности приложениях, вы можете захотеть сравните спецификации c версии компилятора
В качестве примечания вам может быть интересно прочитать больше об их плане разработки , который включает в себя объяснение нумерации версий et c.