-mtune не нужен - он и так по умолчанию равен значению -march либо надо задавать его в generic - ибо быстрей -mmmx тоже не нужен - он в составе -msse4.2 таки дела
Сразу видно аналитега. '-O2' вместо '-Os' или '-Ofast', flto в помине нету, зато '-msse' и '-mmmx', которые автоматом включатся от native архитектуры, ffast-math, способный поломать некоторые программы, и очень спорный unroll-loops, который может как поднять, так и понизить производительность.
Вообще-то нет, сейчас рулит отзывчивость программы, а она флагами компилятора не улучшается (это у гентушников плацебо такое). Только concurrensy.
Но всегда приятно поиздеваться над людьми, верящими во флаги и не слышавшими про link time optimization, profile guided optimization и не знающими, почему в debian кое-где даже флаг -O2 не ставят.
это в теориии, а на приктике есть софт который с ним ты вообще не соберёшь
И это подтверждает мою точку зрения, что включением lto и profile-guided optimization должны заниматься авторы софта, равно как и пакетированием. К сожалению, им тут сплошные препоны ставят - и в gcc куча багов всплывает при агрессивных оптимизациях, и пакеты требуют спек на не пойми каком языке, и системы сборки далеко не интуитивно понятны.
И это подтверждает мою точку зрения, что включением lto и profile-guided optimization должны заниматься авторы софта
согласен
равно как и пакетированием
мне винда не нужна я сам знаю с какими опциями собрать пакет если они будут выкладывать сборки типа minimal_gtk2, minimal_gtk3, full_version и прочие ВСЕвозможные комбинации, аля гента, то согласен иначе это будет фарш
man gcc
с помощью -msse* ты можешь только задать поддерживаемые симды, если они не заданы в -march=*
поясню:
core2
Intel Core2 CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3 and SSSE3 instruction set support.
а моя корка (точнее уже quad) поддерживает ещё и sse4_1, потому у меня задан ещё и -msse4.1
сделано это для того, чтобы охватить инструкции, которые поддерживают все корки (в данном случае)
надеюсь понятно разжевал
не все корки поддерживают sse4_1 mmx избыточен в данном случае аж 2 раза: native + -msse4.1 ffast-math ломает кучу софта, а вторую заставляет работать медленнее - привет, архиваторы фанролл так же может довольно нехило тормознуть софт инлайн аналогично векторизация тоже иной раз болеет этим короче, из твоего я бы оставил только: -O2 -pipe -march=native -mtune=generic -msse4.1 -mcx16 -msahf -mfpmath=sse -fomit-frame-pointer если 64 в случае 32 убрать ещё и -mcx16 -msahf
ах да -fomit-frame-pointer только на мультилибе разве что может быть полезен, если брать 64
У неё отношение к оптимизации было, как к складскому учёту: пять штук продвинутых инструкций в маш.коде автоматически делает его лучше, чем две штуки таких инструкций. Где они там в этом коде находятся и что конкретно делают - ниипёт.