É possível limitar uso da CPU pelo aplicativo?
É 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
Curtidas 0
Respostas
Anderh
24/08/2006
sobe
GOSTEI 0
Anderh
24/08/2006
sobe
GOSTEI 0
Anderh
24/08/2006
sobe
GOSTEI 0
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
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
24/08/2006
Valeu Michael! Vamos à luta então!
GOSTEI 0
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
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