Ele é usado no Gentoo e eu não notei nada incomum.
Diz-se que a compilação de ferramentas GNU e o kernel do Linux com a opção de otimização -O3
gcc produzirão bugs estranhos e divertidos. É verdade? Alguém já tentou ou é apenas uma farsa?
-O3
tem várias desvantagens:
-O2
ou -Os
. Às vezes, ele produz um código mais longo devido ao desenrolar do loop, o que pode ser mais lento devido ao pior desempenho de cache do código. -O3
. -O3
flag não alterará o custo de troca de contexto ou velocidade de E / S. Não acho que algo como < 0,1% de aumento no desempenho geral valha a pena. Observe que grandes blocos do toolchain (glibc em particular) flat out não compilam se você alterar os níveis de otimização. O sistema de compilação é configurado para ignorar suas preferências -O para essas seções na maioria das distribuições sãs.
Simplificando, certos recursos fundamentais da biblioteca e do sistema operacional dependem do código que está realmente fazendo o que está sendo dito, e não do que seria mais rápido em muitos casos. -fgcse-after-reload em particular (ativado por -O3) pode causar problemas estranhos.
Nos últimos 10 anos, tenho executado vários sistemas Gentoo com mais de 1.000 pacotes usando -O3 -march=native
globalmente e ainda não corri em nenhum desses problemas místicos de estabilidade que -O3
deveria ter. Os benchmarks de aplicativos intensivos de CPU (como aplicativos de matemática / ciências) mostram consistentemente -O3
para produzir um código mais rápido, afinal, seria inútil se não o fizesse. Para a maioria dos aplicativos de desktop, CFLAGS
não importa muito, de qualquer forma, já que eles são vinculados a E / S, mas é muito importante para o material do servidor que está limitado à CPU.
-O3 usa algumas otimizações agressivas que só são seguras se certas suposições sobre o uso do registro, como os quadros de pilha são interagidos, e a reentrada da função são verdadeiras, e essas suposições não são garantidas em algum código como o kernel, especialmente quando A montagem inline é usada (como em algumas partes de baixo nível do kernel e seus módulos de drivers).
Enquanto você pode usar o -O3 e outros botões de otimização na maioria dos aplicativos (e isso pode resultar em melhorias de velocidade), eu hesitaria em usar esses ajustes no próprio kernel ou na ferramenta. corrente necessária para construí-lo (compilador, binutils, etc.).
Pense nisso: um ganho de desempenho de 5% dos subsistemas raid e ext3 vale a pena no travamento do sistema ou possível perda de dados e / ou corrupção?
Ajuste todos os botões desejados para aquela porta Quake que você está tocando ou os codecs de áudio / vídeo que você usa para copiar sua coleção de DVD para arquivos divx. Você provavelmente verá uma melhora. Apenas não mexa no kernel, a menos que você tenha tempo a perder e os dados que você pode perder.