Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Быстродействие алгоритмов


Dmitry87 ©   (2008-07-17 16:15:00) 

Как определить время выполнения определеных алгоритмов в приложение (т.е. определить быстродействие алгоритма, где-то слышал что есть вроде директивы для этого).


Anatoly Podgoretsky   (2008-07-17 22:48:00) [1]

> Dmitry87  (17.07.2008 16:33:02)  [2]

procedure CopyDataFile(const Src, Dst: string);
procedure CopyDataFile(const Src, Dsc: string);

В одном строк и операций меньше, но памяти больше, во втором наоборот.
А у тебя какой критений.
Что такое лучше?

Кроха сын к отцу пришел
и сказала кроха
Пися в писю холошо
Пися в попу плохо.


stas   (2008-07-17 20:29:00) [2]

Правильный$Вася   (17.07.08 20:20) [9]
я циклом когда-то делал и считал среднее фрифметическое, только не копирование файлов, а что-то другое.


Правильный$Вася   (2008-07-17 20:20:00) [3]


> А что его определять

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


stas   (2008-07-17 20:10:00) [4]

А что его определять
Перед запуском процедуры запомнил в одну переменную текущее время
По завершению запомнил время в другую переменную, вывел разницу.


stas   (2008-07-17 20:07:00) [5]

3-й отпадает сразу, ты весь файл тянешь в ОП что нехорошо.


Jeer   (2008-07-17 17:31:00) [6]


> две копны.


Здесь их четыре - реально невозможно выбрать, чем же копировать.

P.S.
Ознакомится с GetTickCount, QueryPerfomanceCounter(), rdtsc..


Поросенок Винни-Пух   (2008-07-17 16:37:00) [7]

5. CopyFile('sorce','dest',false)


Правильный$Вася   (2008-07-17 16:36:00) [8]

есть такое понятие - профайлеры
они этим и занимаются
ищи в гугле delphi profiler


Поросенок Винни-Пух   (2008-07-17 16:35:00) [9]

вспомнилась басня про ослика и две копны.


Dmitry87   (2008-07-17 16:33:00) [10]

Но все же какой из представленных ниже алгоритмов рациональнее всего использовать, а то написал а какой лучше использовать не определюсь.

1.


procedure CopyDataFile(const Src, Dst: string);
var
 iFileHandle, oFileHandle: THandle;
 iFileLength: Integer;
 Buf: PChar;
begin
 iFileHandle := FileOpen(Src, fmOpenRead or fmShareDenyNone);
 try
   iFileLength := FileSeek(iFileHandle, 0, 2);
   GetMem(Buf, iFileLength);
   try
     FileRead(iFileHandle, Buf^, iFileLength);
     oFileHandle := FileOpen(Dst, fmOpenReadWrite or fmShareDenyNone);
     try
       FileWrite(oFileHandle, Buf^, iFileLength);
     finally
       FileClose(oFileHandle);
     end;
   finally
     FreeMem(Buf, iFileLength);
   end;
 finally
   FileClose(iFileHandle);
 end;
end;


2.


procedure CopyDataFileFStream(const Src, Dst: string);
var
 FI, FO: TFileStream;
begin
 FI := TFileStream.Create(Src, fmOpenRead or fmShareDenyNone);
 try
   FO := TFileStream.Create(Dst, fmCreate);
   try
     FO.CopyFrom(FI, FI.Size);
   finally
     FO.Free;
   end;
 finally
   FI.Free;
 end;
end;


3.


procedure CopyDataFile(const Src, Dst: string);
var
 S: TMemoryStream;
begin
 S := TMemoryStream.Create;
 try
   S.LoadFromFile(Src);
   S.SaveToFile(Dst);
 finally
   S.Free;
 end;
end;


4.


procedure CopyDataFile(const Src, Dsc: string);
var
 FI, FO: TextFile;
 s: string;
begin
 AssignFile(FI, Src);
 AssignFile(FO, Dsc);
 Reset(FI);
 try
   Rewrite(FO);
   try
     while not EOF(FI) do
     begin
       Read(FI, s);
       Write(FO, s);
     end;
   finally
     CloseFile(FO);
   end;
 finally
   CloseFile(FI);
 end;
end;


Сергей М.   (2008-07-17 16:25:00) [11]

Одна и та же ветка одного и того же алгоритма в разных условиях среды исполнения даст разные результаты оценки времени исполнения.


Наверх

Титульная страница Поиск, карта сайта Написать письмо