Ver Mensaje Individual
  #2  
Antiguo 07-07-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 24
seoane Va por buen camino
La manera de reducir el uso de la CPU es no usándola

Y no bromeo, cuando tu estas en un bucle tu aplicación esta usando todo el tiempo de CPU que puede. Así que mientras no salgas del bucle el uso de la CPU siempre tiende a ser del 100%. La única solución es decirle a nuestra aplicación que se tome un respiro, esto inevitablemente provoca que el proceso sea mas lento pero bajara el uso de la CPU. Tu tendrás que valorar que es lo mas importante.

Traducir esto a código es sencillo:
Código Delphi [-]
while Condicion do
begin
  // Aqui tu rutina
  Sleep(10);
end;
Sleep detiene nuestro proceso y no lo deja continuar hasta que pasa el tiempo que le marcamos. Esto reducirá el tiempo que el proceso esta en ejecución y por lo tanto bajara el uso de la CPU.

Aunque quizá te llegue con esto otro:
Código Delphi [-]
while Condicion do
begin
  // Aqui tu rutina
  Sleep(0);
end;
Aquí Sleep comprueba si hay algún proceso, con la misma prioridad que el nuestro, que esta preparado para ejecutarse y le cede el puesto. Pero si no hay ninguno esperando, Sleep vuelve inmediatamente y nuestro proceso sigue ejecutándose. Así el proceso no se detiene sin necesidad y los demás procesos tienen un poco mas de tiempo.

Como ves usar Sleep ralentiza el proceso, al igual que lo hace usar Application.ProcessMessages, así que eres tu quien tiene que valorar si es necesario usarlo o no. Si la rapidez es importante no lo uses, si lo importante es que el resto del equipo siga siendo "usable" mientras se lleva acabo el proceso usalo sin duda.
Responder Con Cita