liberar recursos ?!?!?!
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
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
Curtidas 0
Respostas
Okama
31/03/2003
Coloca o código aqui, eu testei a cópia de 10.000 arquivos e a velocidade não ocilou.
GOSTEI 0
Nildo
31/03/2003
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.
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.
GOSTEI 0
Okama
31/03/2003
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;
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;
GOSTEI 0
Aroldo Zanela
31/03/2003
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.
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.
GOSTEI 0
Nildo
31/03/2003
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
GOSTEI 0
Nildo
31/03/2003
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...
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...
GOSTEI 0
Nildo
31/03/2003
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)
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)
GOSTEI 0