Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
4-36895
Urri
2003-10-17 07:02
2003.12.12
Размер области многострочного вывода


7-36873
pasha
2003-10-01 23:49
2003.12.12
Как заставить TTHread принимать сообщения


7-36852
UserForever
2003-10-08 20:08
2003.12.12
Метка диска


14-36804
ИдиотЪ
2003-11-20 11:46
2003.12.12
а вот представьте ...


7-36867
TGrey
2003-10-05 13:43
2003.12.12
Работа с BIOS-ом из под WinXP