GNU/Linux >> Tutoriels Linux >  >> Linux

Compiler GNU/Linux avec l'optimisation -O3

-O3 présente plusieurs inconvénients :

  1. Tout d'abord, il produit souvent un code plus lent que -O2 ou -Os . Parfois, il produit un code plus long en raison du déroulement de la boucle, qui peut en fait être plus lent en raison de performances de cache inférieures au code.
  2. Comme il a été dit, cela produit parfois un mauvais code. Cela peut être dû à une erreur d'optimisation ou à une erreur de code (comme ignorer l'aliasing strict). Comme le code du noyau est parfois et doit parfois être "intelligent", je dirais qu'il est possible qu'un développeur du noyau ait fait une erreur. J'ai rencontré divers problèmes étranges, comme le plantage des utilitaires de l'espace utilisateur, lorsque j'ai compilé le noyau avec gcc 4.5 qui, à ce moment-là, était stable. J'utilise toujours gcc 4.4 pour le noyau et plusieurs utilitaires de l'espace utilisateur sélectionnés en raison de divers bogues. La même chose peut s'appliquer pour -O3 .
  3. Je ne pense pas que cela offre beaucoup d'avantages pour le noyau Linux. Le noyau ne fait pas de calculs lourds et à certains endroits, il est optimisé avec l'assemblage. -O3 le drapeau ne sera pas modifier 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.

Il est utilisé dans Gentoo, et je n'ai rien remarqué d'inhabituel.


Notez que de gros morceaux de la chaîne d'outils (glibc en particulier) 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 saines.

En termes simples, certaines fonctionnalités fondamentales de la bibliothèque et du système d'exploitation dépendent du code qui fait réellement 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 causer des problèmes étranges.


Linux
  1. La commande whoami sous Linux expliquée avec des exemples

  2. Comment charger les modules du noyau Linux à partir du code C ?

  3. Comment coder un module du noyau Linux ?

  4. Débogage du noyau Linux avec QEMU

  5. Comment créer un linux amorçable minimal (uniquement avec un terminal) à partir du code source du noyau ?

Premiers pas avec Visual Studio Code (VSC) sous Linux

Principes de base de la compilation de logiciels à partir du code source sous Linux

Gérer et surveiller les modules du noyau Linux avec Kmon

Patcher le noyau Linux Raspberry Pi avec KernelCare GRATUITEMENT !

Mises à jour du noyau sans redémarrage

Prérequis pour le portage de Linux sur une autre plate-forme