Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.12;
Скачать: CL | DM;

Вниз

Копирование   Найти похожие ветки 

 
Хрюначок   (2003-11-19 16:12) [0]

Есть куча фалов, как ускорить ее копирование (причем общий размер меньге 400 кб), но копируется долго, как ускорить??


 
iNew ©   (2003-11-19 16:30) [1]

Долго это сколько?


 
ИдиотЪ ©   (2003-11-19 16:35) [2]

Удалено модератором
Примечание: Offtopic


 
Хрюначок   (2003-11-19 16:47) [3]

Нк около 1 часа !!!
Я спросил серьезно !!!!


 
ИдиотЪ ©   (2003-11-19 16:49) [4]

на дискету быстрее тогда


 
Дремучий ©   (2003-11-19 16:51) [5]

зархивировать файлы, копировать архив


 
Дремучий ©   (2003-11-19 16:52) [6]

сменить носитель (винт/дискету)


 
Йорген фон Швах ©   (2003-11-19 16:55) [7]

Удалено модератором
Примечание: Offtopic


 
MeF88 ©   (2003-11-19 16:57) [8]

Никак.


 
Хрюначок   (2003-11-19 17:25) [9]

Насчет архива: Можно будет быстрее, но потом долго извлекать !!!!!!


 
NickBat ©   (2003-11-19 17:38) [10]

Удалено модератором


 
RealRascal ©   (2003-11-19 17:41) [11]

А 1 файл суммарного размера копируется быстрее?


 
NickBat ©   (2003-11-19 17:43) [12]

Удалено модератором
Примечание: Почтой


 
Dimka Maslov ©   (2003-11-19 18:33) [13]

Один файл суммарного размера копируется быстрее куча мелких файлов. Но даже если 400 кб копируется около часа, то стоит призадуматься над некоторыми вещами (многими).


 
Anatoly Podgoretsky ©   (2003-11-19 18:36) [14]

Как такое удалось сделать?


 
NickBat ©   (2003-11-19 18:54) [15]

Не знаю как такое удалось сделать, но речь идет о ста тысячах файлов. Была тут одна ветка с этим товарищем. Я об этом два раза говорил, но оба этих напоминания отмечены грифом : Удалено модератором. :))
Если взять 100000 файлов по 1 байту получается ~100 кБайт.
То есть у него файлы по 4 байта.

Чем дальше в лес тем крупнее орехи. :))


 
Хрюначок   (2003-11-19 19:36) [16]

Так что есть у кого-нибудь, какие-нибудь варяинты :)
2NickBat Необязательно все файлы одного размера!!!! (я сказал примерно, имея ввиду то, что рсуммарный размер маленький!!!)


 
Anatoly Podgoretsky ©   (2003-11-19 19:59) [17]

И ты думаешь, что 100000 файлов по 4 байта будут копироваться около часа, этого недостаточно, надо еще какие то секретные технологии.


 
Хрюначок   (2003-11-19 20:19) [18]

Я уже копировал, заняло около 60 минут !!
Ну так что :) предлагайте идеи !!!!!!!!


 
Anatoly Podgoretsky ©   (2003-11-19 20:24) [19]

Рыть или трясти


 
RealRascal ©   (2003-11-19 20:52) [20]

НЕ знаю конечно, но возможно если создать кучу потоков(не на все файлы конечно, штук 10-50) пусть каждый копирует свой файл, одновременно запустить, могет быстрее будет...
Все равно информации недостаточно. Как копируешь, какой носитель, провести ряд экспериментов...Может, если функция копирования несовершенна...Я как-то пробовал создавать 100 000 (если я правильно помню) файлов размером 1кб, так они у меня создавались минут 7-10...


 
Anatoly Podgoretsky ©   (2003-11-19 20:54) [21]

RealRascal © (19.11.03 20:52) [20]
Работа с файлами в кодовых потоках приведет к резкому замедлению.


 
panov ©   (2003-11-19 21:02) [22]

щаз поэкспериментируем...


 
Хрюначок   (2003-11-19 21:21) [23]

Разницы нет замедляется, или нет, главное, чтобы скорость увелилилась


 
Хрюначок   (2003-11-19 21:24) [24]

2RealPascal
Носитель: баракуда (60гигов 7200), сама тачка по себе сильная, так что от этого не зависит, а копировал обычным методом(CopyFile......)!! :)


 
panov ©   (2003-11-19 21:25) [25]

Из одного каталога в другой копировал?


 
VMcL ©   (2003-11-19 21:27) [26]

2 Хрюначок:

1. Попробуй читать в буфер по, например, 1000 файлов, а потом уже их записывать.
2. Как насчет антивирусных мониторов?


 
RealRascal ©   (2003-11-19 21:28) [27]

>[23]
Ну так пробуй. Для начала можешь запустить несколько програмок, каждая из которых будет копировать свою часть и следи за скоростью. Увеличится - начинай оформлять официально, потоками.
Кстати, что представляют из себя эти файлы? не легче ли их создать заново? Да и где можно столкнуться с подобными проблемами...не представляю.


 
Игорь Шевченко ©   (2003-11-19 21:34) [28]

Хрюначок (19.11.03 21:24)

Ты можешь объяснить, откуда такая проблема взялась ? Такое количество файлов всегда будет долго копироваться, как с потоками, так и без, поскольку основная нагрузка ложится на файловую систему при создании такого количества файлов и этот момент ты НИКАК не ускоришь.


 
Хрюначок   (2003-11-19 21:44) [29]

Ну да! Прикол в том, что мне надо написать программу, которая изначально ориентированна на такое большое количество файлов, вот из за этого и возникла такая проблема, представьте сколько бы он копировал просто обычным методом все это с сд диска! :))

2VMcL антивирусный монитор отключал, скоросьт увеличилась секунд на 5. Их нужно скопировать только один раз и впринципе все(именно при установке), из-за этого свой установщик приходится писать :)


 
MeF88 ©   (2003-11-19 21:48) [30]


> Хрюначок (19.11.03 21:44) [29]

> Игорь Шевченко © (19.11.03 21:34) [28]
> MeF88 © (19.11.03 16:57) [8]


 
Anatoly Podgoretsky ©   (2003-11-19 21:48) [31]

Ты ни разу не назвал количество файлов, только общий размер.


 
RealRascal ©   (2003-11-19 21:48) [32]

>[29]
НЕ понял...При установке программы приходится копировать 100000 файлов!!?


 
MeF88 ©   (2003-11-19 21:50) [33]


> НЕ понял...При установке программы приходится копировать
> 100000 файлов!!?

Обычно такого не требуется. Я ещё ни разу такого не встречал. Но, наверное, бывает, раз нужно.


 
Хрюначок   (2003-11-19 21:51) [34]

около 10000 файлов. Могу предисторию рассказать :)


 
Игорь Шевченко ©   (2003-11-19 21:54) [35]

Так расскажи, а то как партизан, в гестапо, попавший, все надо клещами вытягивать.


 
MeF88 ©   (2003-11-19 21:54) [36]


> Могу предисторию рассказать :)

Давай.


 
RealRascal ©   (2003-11-19 21:55) [37]

Только то что касается сути проблемы, плиз.
Кстати, я тут вспомнил способ бысторого удаления всех файлов в каталоге. Ничто по скорости не сравнится с досовской командой
del.
(так и вводится, с точкой на конце)


 
MeF88 ©   (2003-11-19 21:57) [38]


> Кстати, я тут вспомнил способ бысторого удаления всех файлов
> в каталоге. Ничто по скорости не сравнится с досовской командой
>
> del.
> (так и вводится, с точкой на конце)

format удаляет дольше?


 
Игорь Шевченко ©   (2003-11-19 21:57) [39]

RealRascal © (19.11.03 21:55)

Неверно


 
Хрюначок   (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.61 MB
Время: 0.026 c
3-36555
Goida
2003-11-22 21:19
2003.12.12
Нормализация ширины столбцов в Гриде


4-36892
Mantic0re
2003-10-17 01:19
2003.12.12
Глупая проблема с ToolBar..


3-36563
Dunmer1
2003-11-20 12:32
2003.12.12
Возможно ли создать базу без использования Database Desktop?


1-36736
Анна
2003-12-01 17:42
2003.12.12
Открытие других программ из приложения


1-36722
warman
2003-12-01 22:14
2003.12.12
Интересные вопросы по Richedit