для некоторого обсуждения на эту тему.

кументация gcc5.4это говорит-O2 включает все флаги оптимизации, указанные в -O. Также включаются следующие флаги оптимизации:

-fthread-jumps -falign-functions -falign-jumps -falign-loops -falign-tags -fcaller-saves -fcrossjumping -fcse-follow-jumps и т. д.

Кажется, что использование -O2 имеет тот же эффект, что и использование всех 83 флагов оптимизации, включенных параметром -O2 в gcc 5.4.0, на производительность тестовых программ.

Однако я сравниваю время выполнения исполняемых файлов test1 и test2, полученных

gcc-5.4 -O2 test.c -o test1

а также

gcc-5.4 -fauto-inc-dec -fbranch-count-reg -fcombine-stack-Adjustments -fcompare-elim ... -fthread-jumps -falign-functions ... (все 83 флага) test.c -o test2

Я проверил 20 случайно сгенерированных c программ и выполнил каждый тестовый пример 100000 раз, чтобы убедиться, что измерение времени выполнения достаточно точное.

Но результат в том, что использование -O2 в среднем примерно на 60% быстрее, чем использование всех 83 флагов.Я действительно сбит с толку, почему эффект от использования -O2 не эквивалентен использованию всех флагов оптимизации, которые он включает.

Я должен что-то неправильно понять, но я не мог найти никакого объяснения. Буду признателен за любую помощь. Большое спасибо.

gcc.gnu.org/wiki/...

Ответы на вопрос(2)

Ваш ответ на вопрос