Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Отсчёт времени сортировки.


Автор: IamDreamer 3.4.2008, 21:15
Какой объект может замерить время, которое понадобилось для отсортировки массива? Timer? Как выглядит процедура определения текущего времени? 

Автор: Данкинг 3.4.2008, 21:17
Функция  time()   - текущее время. smile 
Засекаешь время до начала сортировки и сравниваешь его со временем окончания.

Автор: IamDreamer 3.4.2008, 21:20
Ну это я и хотел. Спасибо.

Добавлено через 1 минуту и 30 секунд
Цитата(Данкинг @  3.4.2008,  21:17 Найти цитируемый пост)
сравниваешь его со временем окончания.

А это как организовать (сравнение времён)? 

Автор: Данкинг 3.4.2008, 22:23
Цитата(IamDreamer @ 3.4.2008,  22:20)
А это как организовать (сравнение времён)?

Вычитаешь конечное из начального. А что там получится - сразу не скажу, пробовать надо.

Автор: Alexeis 3.4.2008, 22:26
  Только проще будет при помощи GetTickCount() - он дает сразу время в мс от старта винды. Нужно вычесть значение первого из второго полученного после сортировки.

Автор: THandle 3.4.2008, 22:26
IamDreamer, время сортировки массива настолько мало, что врядли тут тебе чем то Time поможетб скорее всего всегда будет 0.000000... smile 

попробуй GetTickCount, хотя тоже вполне возможен 0 результат.

Например на сортировке Хоара из соседней темы такой код:


Код

...
var
  ...
  Start, Finish : integer;
Begin
  ...
  Start := GetTickCount;
  Sort(...);
  Finish := GetTickCount;
  ...
  Writeln('Tick Count: ',  finish - start);
end;


Написал ноль.




Автор: Alexeis 3.4.2008, 22:36
THandle, все зависит от размера массива. Если он на 200000 элементов, то хватит точности. 

Автор: 1Andrey1 3.4.2008, 23:30
я гдето читал что GetTickCount не срабатывает, если время меньше 15 милисекунд

Автор: Alexeis 3.4.2008, 23:52
Цитата(1Andrey1 @  3.4.2008,  22:30 Найти цитируемый пост)
я гдето читал что GetTickCount не срабатывает, если время меньше 15 милисекунд

  Ага, только не 15,  а 10, но вообще зависит от настроек системы. Если время работы 200-300мс, то погрешность мало заметна. 

Автор: IamDreamer 4.4.2008, 06:49
THandle, не совсем: сортировка 10 элементов - это проверка правильности алгоритма, а на время сортировать надо массивы с гораздо большей размерностью.

Добавлено через 55 секунд
За GetTickCount спасибо.

Автор: IamDreamer 4.4.2008, 07:20
Цитата(Alexeis @  3.4.2008,  22:26 Найти цитируемый пост)
Нужно вычесть значение первого из второго полученного после сортировки

Не наоборот?

Автор: Alexeis 4.4.2008, 09:06
Цитата(IamDreamer @  4.4.2008,  06:20 Найти цитируемый пост)
Не наоборот? 

  Неа. Могучий русский язык smile

Автор: Rennigth 4.4.2008, 11:35
Цитата(THandle @  3.4.2008,  22:26 Найти цитируемый пост)
IamDreamer, время сортировки массива настолько мало, что врядли тут тебе чем то Time поможетб скорее всего всегда будет 0.000000...  

попробуй GetTickCount, хотя тоже вполне возможен 0 результат.

Например на сортировке Хоара из соседней темы такой код:


Цитата(Alexeis @  3.4.2008,  22:36 Найти цитируемый пост)
THandle, все зависит от размера массива. Если он на 200000 элементов, то хватит точности.  

бррр... все сошли сума... а сделать много итераций нельзя конечно...  smile 

Автор: IamDreamer 4.4.2008, 17:06
Цитата(Alexeis @  4.4.2008,  09:06 Найти цитируемый пост)
  Неа. Могучий русский язык =)

И впрямь.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)