История изменений
Исправление EXL, (текущая версия) :
что будет быстрее: -Ofast или -Os?
-Ofast
включает все оптимизации -O3
+ некоторые не особо безопасные оптимизации.
-Os
просто включает все оптимизации -O2
кроме тех, которые раздувают финальный размер исполняемого файла.
генту вики всё ещё рекоммендует
-О2
И правильно делает. К -O2
обычно добавляют -march
конкретно для CPU и всякие vectorize
-флажки.
про flto … вообще ни слова.
https://wiki.gentoo.org/wiki/GCC_optimization#Link_Time_Optimization_.28LTO.29
так как собрать самую быструю плазму?
Не заниматься ерундой и использовать бинарные пакеты.
Помнится мне забавный случай на ЛОРе когда какой-то неофит-джентушник натолкал всех этих -O3
и -march
и на выходе в итоге p7zip в его Gentoo работал в два раза медленнее такого же p7zip который собрали мейнтейнеры Fedora (тестировалось на одном железе, у него был дуалбут с Fedora). Другой случай – когда очередной джентушник так наооптимизировал себе ядро, что отключил SMP и полгода-год сидел на одном ядре CPU, жалуясь на нехорошую Mozilla, которая добавила Rust и компиляция Firefox выросла на несколько часов.
Надо бы добавить ссылки на эти эпичные треды на Лурк, если их уже не добавили. Ну и да:
К сожалению, начинающие гентузадроты первым делом пытаются включить сразу все возможные и невозможные наборы инструкций и оптимизаций, причём глобально для всей системы. Например, так:
CFLAGS="-march=core-avx2 -mcpu=core-avx2 -pipe -O9 -frename-registers -fno-thread-jumps -fno-omit-frame-pointer -mieee-fp -finline-limit=600 -mno-push-args -fno-signaling-nans -malign-double -fno-defer-pop -fno-cprop-registers -maccumulate-outgoing-args -fno-if-conversion2 -fno-gcse -fno-expensive-optimizations -fno-optimize-sibling-calls -fno-regmove -fno-schedule-insns"
В результате сего действа задрот как правило получает +5% к общей производительности системы и 100500 непонятных невоспроизводимых багов, после чего лезет в интернеты излить свою ненависть. Официальный мануал рекомендует безопасные наборы флагов, которые выглядят довольно скромно [2]. А лучше вообще включить только только -march=native и -O2, а дальше компилятор сам разберётся.
Исходная версия EXL, :
что будет быстрее: -Ofast или -Os?
-Ofast
включает все оптимизации -O3
+ некоторые не особо безопасные оптимизации.
-Os
просто включает все оптимизации -O2
кроме тех, которые раздувают финальный размер исполняемого файла.
генту вики всё ещё рекоммендует
-О2
И правильно делает. К -O2
обычно добавляют -march
конкретно для CPU и всякие vectorize
-флажки.
про flto … вообще ни слова.
https://wiki.gentoo.org/wiki/GCC_optimization#Link_Time_Optimization_.28LTO.29
так как собрать самую быструю плазму?
Не заниматься ерундой и использовать бинарные пакеты.
Помнится мне забавный случай на ЛОРе когда какой-то неофит-джентушник натолкал всех этих -O3
и -march
и на выходе в итоге p7zip в его Gentoo работал в два раза медленнее такого же p7zip который собрали мейнтейнеры Fedora (тестировалось на одном железе, у него был дуалбут с Fedora). Другой случай – когда очередной джентушник так наооптимизировал себе ядро, что отключил SMP и полгода-год сидел на одном ядре CPU, жалуясь на нехорошую Mozilla, которая добавила Rust и компиляция Firefox выросла на несколько часов.
Надо бы добавить ссылки на эти эпичные треды на Лурк, если их уже не добавили.