GNU/Linux >> Tutoriales Linux >  >> Linux

Compilando GNU/Linux con optimización -O3

-O3 tiene varias desventajas:

  1. En primer lugar, a menudo produce un código más lento que -O2 o -Os . A veces produce un código más largo debido al desenrollado del bucle que, de hecho, puede ser más lento debido a un peor rendimiento del código en caché.
  2. Como se dijo, a veces produce un código incorrecto. Puede deberse a un error en la optimización o un error en el código (como ignorar el alias estricto). Como el código del kernel a veces es y a veces tiene que ser 'inteligente', diría que es posible que algún desarrollador del kernel haya cometido algún error. Experimenté varios problemas extraños, como fallas en las utilidades del espacio de usuario, cuando compilé el kernel con gcc 4.5, que en ese momento era estable. Todavía uso gcc 4.4 para kernel y varias utilidades de espacio de usuario seleccionadas debido a varios errores. Lo mismo puede aplicarse a -O3 .
  3. No creo que ofrezca muchos beneficios para el kernel de Linux. El núcleo no realiza cálculos pesados ​​y, en algunos lugares, está optimizado con ensamblaje. -O3 bandera no cambiar el costo del cambio de contexto o la velocidad de E/S. No creo que algo como <0.1% de aceleración del rendimiento general valga la pena.

Se usa en Gentoo y no noté nada inusual.


Tenga en cuenta que grandes partes de la cadena de herramientas (glibc en particular) no se compilan si cambia los niveles de optimización. El sistema de compilación está configurado para ignorar sus preferencias -O para estas secciones en la mayoría de las distribuciones sensatas.

En pocas palabras, ciertas características fundamentales de la biblioteca y del sistema operativo dependen de que el código realmente haga lo que dice, no lo que sería más rápido en muchos casos. -fgcse-after-reload en particular (habilitado por -O3) puede causar problemas extraños.


Linux
  1. Particionar una unidad en Linux con GNU Parted

  2. Haz matemáticas en el shell de Linux con GNU bc

  3. Comando whoami en Linux explicado con ejemplos

  4. Linux:¿partes propietarias o cerradas del kernel?

  5. luchando con c ++ IDE en linux

Primeros pasos con Visual Studio Code (VSC) en Linux

Conceptos básicos de la compilación de software a partir del código fuente en Linux

Administre y monitoree los módulos del kernel de Linux con Kmon

¡Parche el kernel Linux de Raspberry Pi con KernelCare GRATIS!

Depuración del kernel de Linux con QEMU

Linux Centos con marca de tiempo dmesg