Eu diria que isso dificilmente depende do código que você está compilando.
Seja lá o que você escolher, será exibido como sinalizador do GCC, de acordo com página do GCC :
-O
,-O1
. Com-O
, o compilador tenta reduzir o tamanho do código e o tempo de execução, sem realizar otimizações que exigem muito tempo de compilação.
-O2
Otimize ainda mais. O GCC realiza quase todas as otimizações suportadas que não envolvem uma troca de velocidade espacial. Em comparação com -O, esta opção aumenta o tempo de compilação e o desempenho do código gerado.
-O3
Otimize ainda mais.-O3
ativa todas as otimizações especificadas por-O2
e também ativa as opções-finline-functions
,-funswitch-loops
,-fpredictive-commoning
,-fgcse-after-reload
,-ftree-vectorize
e-fipa-cp-clone
.
Você pode executar
gcc -O<1-3> -Q --help=optimizers
para ver o conjunto de métodos de otimização ativados para cada nível de otimização.
Quanto mais agressivos eles são, maior o risco de o compilador estragar alguma coisa (não deveria acontecer, e eu não sei qual a probabilidade de algo acontecer, mas se você quer ficar do lado seguro, eu sugiro você segue a recomendação do apt-build não para usar -O3
/ Strong ).