Réponses:
Il est utilisé dans Gentoo, et je n'ai rien remarqué d'inhabituel.
-O3
présente plusieurs inconvénients:
-O2
ou -Os
. Parfois, il produit du code plus long en raison du déroulement de la boucle, qui peut en fait être plus lent en raison des performances de cache du code moins bonnes.-O3
.-O3
L'indicateur ne changera pas le coût du changement de contexte ou la vitesse des E / S. Je ne pense pas que quelque chose comme <0,1% d'accélération des performances globales en vaille la peine.Notez que de gros morceaux de la chaîne d'outils (glibc en particulier) à plat ne se compilent pas si vous modifiez les niveaux d'optimisation. Le système de construction est configuré pour ignorer vos préférences -O pour ces sections sur la plupart des distributions sensées.
En termes simples, certaines fonctionnalités fondamentales de la bibliothèque et du système d'exploitation dépendent du fait que le code fait ce qu'il dit, et non de ce qui serait plus rapide dans de nombreux cas. -fgcse-after-reload en particulier (activé par -O3) peut provoquer des problèmes étranges.
Au cours des 10 dernières années, j'ai utilisé plusieurs systèmes Gentoo avec plus de 1000 packages à l' -O3 -march=native
échelle mondiale et je n'ai encore rencontré aucun de ces problèmes de stabilité mythiques qui -O3
sont censés avoir. Les références des applications gourmandes en CPU (comme les applications mathématiques / scientifiques) se révèlent systématiquement -O3
produire un code plus rapide, après tout, cela serait inutile si ce n'était pas le cas. Pour la majorité des applications de bureau CFLAGS
, peu importe de toute façon, car elles sont liées aux E / S, mais cela compte beaucoup pour les choses côté serveur qui sont liées au processeur.
-O3 utilise des optimisations agressives qui ne sont sûres que si certaines hypothèses sur l'utilisation des registres, la façon dont les cadres de pile interagissent et la réentrance des fonctions sont vraies, et ces hypothèses ne sont pas garanties d'être vraies dans certains codes comme le noyau, en particulier lorsque l'assemblage en ligne est utilisé (comme c'est le cas dans certaines parties de bas niveau du noyau et de ses modules de pilote).
-O2
à connaître la météo ou non, cela fait mal ou aide
Bien que vous puissiez vous en sortir en utilisant -O3 et d'autres boutons d'optimisation sur la plupart des applications (et peut entraîner des améliorations de vitesse), j'hésiterais à utiliser de tels ajustements le noyau lui-même ou sur la chaîne d'outils requise pour le construire (compilateur, binutils, etc.).
Pensez-y: un gain de performances de 5% des sous-systèmes raid et ext3 vaut-il un plantage du système ou une perte et / ou une corruption potentielle des données?
Ajustez tous les boutons pour le port Quake que vous jouez ou les codecs audio / vidéo que vous utilisez pour extraire votre collection de DVD en fichiers divx. Vous verrez probablement une amélioration. Ne gâchez pas le noyau, sauf si vous avez du temps à perdre et des données que vous pouvez supporter à perdre.
-O0
n'est pas du tout pris en charge! stackoverflow.com/questions/29151235/…