Ver Mensaje Individual
  #6 (permalink)  
Antiguo 27/03/2013, 06:25
amchacon
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 12 años, 4 meses
Puntos: 28
Respuesta: ¿Alguna idea para optimizar el código?

El % de CPU no se corresponde con la carga sino con las veces "que descansa".

Prueba compilar este programa:

Código C++:
Ver original
  1. int main()
  2. {
  3.     int Cosita = 0;
  4.    
  5.     while (true)
  6.     {
  7.         Cosita++;
  8.         Cosita--;
  9.     }
  10.     return 0;
  11. }

No hace nada, pero consume el 100% de la CPU (en procesadores mononúcleo). Como puedes ver, no está haciendo nada del otro mundo. Incluso podríamos dejarlo así:

Código C++:
Ver original
  1. int main()
  2. {
  3.     while (true);
  4.  
  5.     return 0;
  6. }

La razón que use el 100% de la CPU es que este programa no deja descansar al procesador.

En condiciones normales el procesador siempre está descansando porque está esperando una acción (por ejemplo, ya sea a que el usuario le introduzca datos por teclado/ratón o porque está cargando archivos del disco duro). Muy a menudo también se "induce" a que el procesador descanse (con alguna función tipo sleep).

En resumen, el uso de la CPU depende de:

- Los descansos que tenga el procesador en el programa.
- Los núcleos que tenga el procesador (cada núcleo puede lanzar un hilo de ejecución, por tanto si saturas un núcleo te quedan los demás). Como tienes un procesador mononúcleo el porcentaje se dispara.

Última edición por amchacon; 27/03/2013 a las 06:32