liberar recursos ?!?!?!

31/03/2003

0

Bom. Eu tenho um FOR que vai de 1 a 10.000 .
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

Nildo

Responder

Posts

31/03/2003

Okama

Coloca o código aqui, eu testei a cópia de 10.000 arquivos e a velocidade não ocilou.

[img:1f52a863d5]http://www.editcnc.com/steve/girdance.gif[/img:1f52a863d5]


Responder

31/03/2003

Nildo

Valew pela ajuda okama !!!


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.


Responder

31/03/2003

Okama

Novamente não vi diferença, copiei um arquivo de 500kb e não houve alteração. entretando fiz algumas modificações no código, acredito que o progressbar esteja consumindo muito recurso, tente substituí-lo por um StaticText, e veja se melhora, aqui não vi diferença.


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;


Responder

31/03/2003

Aroldo Zanela

Nildo,

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.


Responder

01/04/2003

Nildo

Okama, não é o tamanho de arquivo que vai diferenciar. É a quantidade. Eu fiz um teste com 10.000 arquivos de 1.9 kb cada. Quando chega mais ou menos nos 400 e poucos ele começa a perder recursos e fica muito lento. Chega uma hora que dá até pra ver copiando 1 por 1


Responder

01/04/2003

Nildo

Novamente, mudei o código. Tirei a progressBar, e coloquei um Label que mostra a quantidade de arquivos que jah foram copiados. Novamente notei que ele começa a ficar lerdo a partir dos 400 e poucos.


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...


Responder

02/04/2003

Nildo

O pior eh que eh verdade.
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)


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar