Текущий архив: 2003.12.12;
Скачать: CL | DM;
Вниз
Копирование Найти похожие ветки
← →
Хрюначок (2003-11-19 22:03) [40]Была база данных, в которой хранилась некая информация(мне так говорили, вроде бы словарь какой-то),
ну так вот кто-то просто взял и спер все данные для свое такой же аналогичной программы, и продал ее
тому клиенту, который хотел купить у первых.. Так мне босс сказал все это переделать так, чтобы
затруднительно было использовать в дальнейшем, но я по своей "тупости" и сказал ради шутки, мол в виде
файлов все представить. Примерно так: имя файла = слову, а то тело = переводу(или что там было так и
не понял :) ). Все зашифрованно. При открытии директории с такой кучей файлов просто мрачно
становится. А в названиях файлов, получаются какие-то каракули, что с первого взгляда кажется просто мусором. Короче вот так.... Может кому-то и смешно, но мне теперь не до смеха, что ради смеха такое сказал :( . Вот и приходится теперь извращаться :))) Все шифровалось RSA, так то это вообще смех :)))))))))))) .... (Я щас сам смеюсь, что понамудрил, аж страшно :)
← →
RealRascal © (2003-11-19 22:03) [41]>format удаляет дольше?
кажется, он formatирует, а не удаляет файлы из каталога.
>Игорь Шевченко © (19.11.03 21:57) [39]
Есть что-либо быстрее(дело в том, что мне приходится чистить каталоги с 5000 - 15000 файлов время от времени)?
← →
MeF88 © (2003-11-19 22:04) [42]
> кажется, он formatирует, а не удаляет файлы из каталога.
Фактически он делает и то, и другое.
> дело в том, что мне приходится чистить каталоги с 5000 -
> 15000 файлов время от времени
Можно поинтерисоваться, откуда столько файлов?
← →
Игорь Шевченко © (2003-11-19 22:08) [43]Хрюначок (19.11.03 22:03)
Срочно собирай свои файлы обратно в базу и шифруй ее.
И на будущее: рассказывать страшную историю с самого начала. Чтобы отвечающим было понятно о чем речь идет.
При твоем подходе тормоза тебе гарантированы, и конкурентам даже не надо будет ничего воровать, чтобы вас обойти
← →
Хрюначок (2003-11-19 22:09) [44]Я ошибся не 10000 а 100000+окол 10000
← →
RealRascal © (2003-11-19 22:09) [45]>Можно поинтерисоваться, откуда столько файлов?
Плохие сообщения(имеющие неправильный формат) перемещаются программой автоматической обработки в спецкаталог. За месяц их накапливется порядочно... А удалять нельзя, пока месяц не пройдет - служебная необходимость...
← →
Игорь Шевченко © (2003-11-19 22:15) [46]RealRascal © (19.11.03 22:09)
Какая файловая система ?
← →
Хрюначок (2003-11-19 22:15) [47]Всем спасибо за помощь :)))
← →
RealRascal © (2003-11-19 22:16) [48]там дос, там пылью пахнет...
Fat, возможно fat16 или 32, не знаю точно...
← →
Anatoly Podgoretsky © (2003-11-19 22:23) [49]10000 файлов общим размером 400 кб, время 281 секунда. CopyFile, как видо очень далеко до 1 часа.
← →
panov © (2003-11-20 19:41) [50]Протестировал... программу написал...
Результаты получились такие:
Creating 100000 files
start:19.32.56.702
end:19.36.07.968
time:00.03.11.266
Copying 100000 files
start:19.32.56.702
end:19.40.55.905
time:00.07.59.203
Copyed 999980 bytes
Неоптимально копируешь такую прорву файлов, однако.
← →
Игорь Шевченко © (2003-11-20 20:11) [51]panov © (20.11.03 19:41)
Саша, файловая система какая ?
← →
SPeller © (2003-11-20 20:16) [52]17-я строка называется.
← →
panov © (2003-11-20 20:28) [53]>Игорь Шевченко © (20.11.03 20:11) [51]
NTFS5
Копирование происходило на одном физическом(и логическом диске) из одного каталога в другой.
← →
panov © (2003-11-20 20:29) [54]Код сейчас приведу. ТАм есть ошибки, но не принципиальные.
← →
panov © (2003-11-20 20:37) [55]
const nFiles=100000;
procedure TForm1.Button1Click(Sender: TObject);
var
i,j: Integer;
tb,te: TDateTime;
Buf: pointer;
p: pointer;
n: array[1..nFiles] of integer;
fs: TFileStream;
SR: TSearchRec;
nSize: LongInt;
begin
me.Lines.Clear;
nSize := 0;
Buf := VirtualAlloc(nil,10*nFiles,MEM_COMMIT + MEM_RESERVE ,PAGE_READWRITE);
if buf = nil then
begin
ShowMessage("VirtualAlloc Error - "+ SysErrorMessage(GetLastError));
Exit;
end;
p := Buf;
tb := now;
me.Lines.Add("Creating "+IntToStr(nFiles)+" files");
me.Lines.Add("start:"+FormatDateTime("hh.nn.ss.zzz",tb));
for j := 1 to nFiles do
begin
fs := TFileStream.Create("d1\F"+IntToStr(j)+".txt",fmCreate);
fs.Write(p^,10);
fs.Free;
p := pointer(Integer(P)+10);
end;
te := now;
me.Lines.Add("end:"+FormatDateTime("hh.nn.ss.zzz",te));
me.Lines.Add("time:"+FormatDateTime("hh.nn.ss.zzz",te-tb));
me.Lines.Add("");
VirtualFree(Buf,10,MEM_RELEASE);
Buf := VirtualAlloc(nil,10*nFiles,MEM_COMMIT + MEM_RESERVE ,PAGE_READWRITE);
if buf = nil then
begin
ShowMessage("VirtualAlloc Error - "+ SysErrorMessage(GetLastError));
Exit;
end;
p := Buf;
i := 1;
me.Lines.Add("Copying "+IntToStr(nFiles)+" files");
me.Lines.Add("start:"+FormatDateTime("hh.nn.ss.zzz",tb));
if FindFirst("d:\data\test\filetest\d1\*.txt",faAnyFile-faDirectory,SR)=0 then
begin
try
repeat
n[i] := SR.Size;
fs := TFileStream.Create("d1\"+SR.Name,fmOpenRead);
fs.Read(p^,SR.Size);
p := pointer(Integer(P)+SR.Size);
nSize := nSize + SR.Size;
fs.Free;
Inc(i);
until (FindNext(SR)<>0);
finally
FindClose(SR);
end;
end;
p := buf;
for j := 1 to i-1 do
begin
fs := TFileStream.Create("d2\F"+IntToStr(j)+".txt",fmCreate);
fs.Write(p^,n[j]);
fs.Free;
p := pointer(Integer(P)+n[j]);
end;
te := now;
me.Lines.Add("end:"+FormatDateTime("hh.nn.ss.zzz",te));
me.Lines.Add("time:"+FormatDateTime("hh.nn.ss.zzz",te-tb));
me.Lines.Add("Copyed "+IntToStr(nSize)+" bytes");
VirtualFree(Buf,nFiles,MEM_RELEASE);
Exit;
end;
← →
Игорь Шевченко © (2003-11-20 21:14) [56]panov © (20.11.03 20:28)
За NTFS замечена одна приятная особенность - создание мелких файлов на ней происходит а) быстрее б) линейно. Скорость создания очередного файла практически не зависит от количества создаваемых файлов.
← →
Юрий Зотов © (2003-11-20 21:22) [57]Возможные причины медленного копирования множества файлов:
- сильно фрагментированный диск
- антивирусный (или иной аналогичный) монитор
- и другие.
:о)
Страницы: 1 2 вся ветка
Текущий архив: 2003.12.12;
Скачать: CL | DM;
Память: 0.58 MB
Время: 0.04 c