liberar recursos ?!?!?!
31/03/2003
0
Esse FOR vai copiar um arquivo chamado ´teste.txt´ para um outro local com nomes diferentes. Por exemplo: 00001.txt, 00002.txt, ... , 10000.txt
Até os 200 primeiros ele copia q eh uma beleza rápido pra xuxú. Só que passou dos 250, 300 ele começa a ficar MUITO lento.
Tem alguma maneira de eu liberar esta memória usada na cópia do arquivo, ou alguma coisa que libere recursos do sistema, para que ele possa continuar copiando na mesma velocidade que começou ?
Muito obrigado !
Bruno Martins Stuani
brunost@uol.com.br
Nildo
Posts
31/03/2003
Okama
[img:1f52a863d5]http://www.editcnc.com/steve/girdance.gif[/img:1f52a863d5]
31/03/2003
Nildo
var
i: integer;
begin
for i := strtoint(edit1.text) to strToInt(edit2.text) do
begin
copyFile(PChar(edit3.text), PChar(edit4.text + ´\´ + inttostr(i) + extractFileExt(edit3.text)), false);
progressBar1.position := trunc((i / strToInt(edit2.text)) * 100);
application.processmessages;
progressbar1.refresh;
end;
end;
Esse código comeca a lerdar depois dos 700 arquivos copiados...
Mas na verdade o código que copia os arquivos esta no meu programa de backup. Ele faz muitas comparações e talz. Por isso nao da pra copiar aqui. Eh MUITO grande. Esse código foi o que eu usei pra criar os 10.000 arquivos pra testar com meu backup. Mas mesmo com esse código passa dos 700, a velocidade já não mais a mesma.
31/03/2003
Okama
var
i: integer;
begin
[b:e0a96f8de3]progressBar1.Max := strToInt(edit2.text);[/b:e0a96f8de3]
for i := strtoint(edit1.text) to strToInt(edit2.text) do
begin
copyFile(PChar(edit3.text), PChar(edit4.text + ´\´ + inttostr(i) +
extractFileExt(edit3.text)), false);
[b:e0a96f8de3]progressBar1.position := I;[/b:e0a96f8de3]
application.processmessages;
[color=blue:e0a96f8de3]//progressbar1.refresh;[/color:e0a96f8de3]
[b:e0a96f8de3]StaticText1.Caption := inttoStr(I);[/b:e0a96f8de3]
end;
31/03/2003
Aroldo Zanela
Fiz o teste com base no código do Emerson.EN e percebi um queda de performance após alguns segundos. Acredito que pode estar relacionado ao arquivo de ´swap´. Testei em uma máquina com W98 e 128 de Ram. Farei um novo teste mais tarde em casa com w2000 e 512 de Ram.
01/04/2003
Nildo
01/04/2003
Nildo
var
i: integer;
begin
for i := strtoint(edit1.text) to strToInt(edit2.text) do
begin
copyFile(PChar(edit3.text), PChar(edit4.text + ´\´ + inttostr(i) + extractFileExt(edit3.text)), false);
label7.caption := inttostr(i) + ´ / ´ + edit2.text;
label7.refresh;
application.processmessages;
end;
end;
Eu sei que este processo toma 100¬ do processador. Eu liguei o RamBooster pra liberar memória enquanto copiava os arquivos, ele realmente copiava mais rápido. Só que a diferença era mínima. Vamos tentar descobrir junto comigo porque que dá essa desaceleração do processo...
02/04/2003
Nildo
Eu teste com o explorer aberto copiando 1000 arquivos de 1.8kb cada. E depois testei com ele fechado. Deu uma diferença de 4 segundos (aberto: 32, fechado: 28)
Clique aqui para fazer login e interagir na Comunidade :)