É possível limitar uso da CPU pelo aplicativo?

Delphi

24/08/2006

É possivel criar no meu aplicativo uma forma de limitar o uso da CPU para a sua execução? Tipo, configurar para que o teste.exe não possa ultrapassar os 10.000k (mostrado no Gerenciador de Tarefas do Windows)?


Anderh

Anderh

Curtidas 0

Respostas

Anderh

Anderh

24/08/2006

sobe


GOSTEI 0
Anderh

Anderh

24/08/2006

sobe


GOSTEI 0
Anderh

Anderh

24/08/2006

sobe


GOSTEI 0
Michael

Michael

24/08/2006

Olá colega!

Esta informação que vc viu no [b:a82cd35fba]Task Manager[/b:a82cd35fba] é a quantidade de memória sendo usada pelo processo, e não o percentual de uso da CPU. Esse dado é da coluna [b:a82cd35fba]CPU [/b:a82cd35fba]na janela.

Para limitar o uso de memória da sua aplicação, vc deve liberar todos os objetos que não são necessários, e evitar de alocar muita memória ao mesmo tempo. Se a memória só está crescendo, então é sinal da existência de [b:a82cd35fba]memory leaks[/b:a82cd35fba] no aplicativo.

Se seu programa está utilizando muito tempo da CPU, então algum procedimento está sendo executado várias vezes - provavelmente dentro de um loop - sem aguardar um intervalo de tempo entre cada iteração.

Para limitar o uso da CPU, vc pode quebrar seu código em [b:a82cd35fba]threads [/b:a82cd35fba]- tomando todos os cuidados inerentes ao assunto -, dar prioridade baixa para elas e colocar uma chamada a [b:a82cd35fba]Sleep(100)[/b:a82cd35fba] dentro do método [b:a82cd35fba]Execute[/b:a82cd35fba]. Não precisa ser necessariamente 100, mas um valor pequeno (em milisegundos).

[]´s


GOSTEI 0
Anderh

Anderh

24/08/2006

Valeu Michael! Vamos à luta então!


GOSTEI 0
Rafael Leite

Rafael Leite

24/08/2006

Pos um pouco antigo, mas vale o registro. Li somente agora.

var
MainHandle : THandle;
begin

try
MainHandle := OpenProcess(PROCESS_ALL_ACCESS, false, GetCurrentProcessID) ;
SetProcessWorkingSetSize(MainHandle, $FFFFFFFF, $FFFFFFFF) ;
CloseHandle(MainHandle);
except
end;

Também utilizado para eliminar lixos de memória.

abc

rafa
GOSTEI 0
POSTAR