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

Вниз

Быстродействие алгоритмов   Найти похожие ветки 

 
Dmitry87   (2008-07-17 16:15) [0]

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


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

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


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

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

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:35) [3]

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


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

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


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

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


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


> две копны.


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

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


 
stas ©   (2008-07-17 20:07) [7]

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


 
stas ©   (2008-07-17 20:10) [8]

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


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


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

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


 
stas ©   (2008-07-17 20:29) [10]

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


 
Anatoly Podgoretsky ©   (2008-07-17 22:48) [11]

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

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

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

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



Страницы: 1 вся ветка

Текущий архив: 2008.08.24;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.195 c
15-1214918754
iZEN
2008-07-01 17:25
2008.08.24
С сегодняшнего дня прекращены продажи Windows XP


15-1215411389
oxffff
2008-07-07 10:16
2008.08.24
Сколько добираться из аэропорта Адлера до Лазаревское.


15-1214155063
Галинка
2008-06-22 21:17
2008.08.24
Asus Eee PC 900


2-1216190316
Michael
2008-07-16 10:38
2008.08.24
Примеры Indy


2-1216278320
PPP
2008-07-17 11:05
2008.08.24
что такое {$A8,B-,C+,D+,E-,F-,G+,H+,I+,J-,K-,L+,M-,N+,O+,P+,Q-,R-