Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2011, 23:15   #1
BlackFishSQL
Форумчанин
 
Аватар для BlackFishSQL
 
Регистрация: 02.04.2011
Сообщений: 136
По умолчанию Время выполнения программы!

Здравтсвуйте!
Проблема стоит так! Имеются коды различных сортировок (да и вообще к любой программе)! как найти время выполнения программ! Скорей всего модуль system нужен а в нём должны быть какие то процедуры или функции! кто нибудь сталкивался и знает как вывести время???
помоги пожалуйста!!!
BlackFishSQL вне форума Ответить с цитированием
Старый 10.11.2011, 01:09   #2
Хамяг
Форумчанин
 
Аватар для Хамяг
 
Регистрация: 22.08.2008
Сообщений: 105
По умолчанию

вот пример:
Код:
uses
  Dos, Crt;

var
  H1,H2,M1,M2,S1,S2,S1a,S2a: Word;
  D: Real;

begin
  ClrScr;
  GetTime(H1,M1,S1,S1a);
  Readln;
  GetTime(H2,M2,S2,S2a);
  D:=(Integer(H2)-Integer(H1))
    +(Integer(M2)-Integer(M1))
    +(Integer(S2)-Integer(S1))
    +(Integer(S2a)-Integer(S1a))/100;

  Writeln(D:4:3,' секунд.');
  Readln;
end.
делаем GetTime в начале процесса и в конце процесса, после чего полученные переменные вычитаем. ещё типы нужно к Integer привести, в примере я показал это.
Хамяг вне форума Ответить с цитированием
Старый 10.11.2011, 01:28   #3
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Если не выходить за рамки TP, то можно как-то так..
Делаешь функцию Timer.
Код:
uses DOS;
// ...
function Timer: LongInt;  // время в 0.01 сек
var
	m,d,h,mi,s,s1: word;
	l: LongInt;
begin
	GetDate(h,m,d,mi);GetTime(h,mi,s,s1);l:=d;
	Timer:=(((l*24+h)*60+mi)*60+s)*100+s1
end;
А потом так:
Код:
var
  t: LongInt;
....
  t:= Timer;
  // тут твой процесс, который надо отхронометрировать
  Writeln('time elapsed (in 0.01 sec) : ',Timer - t);
P.S.
Слишком долго писал пост - Хамяг меня опередил ))

P.P.S.
Хамяг, твой код даст неверный результат, если во время работы проги сменилась дата. Не такая уж и необычная ситуация - у меня это самый активный рабочий период, и прога может работать от минут до часов. Именно поэтому я ввел GetDate.
Предпочитаю на "ты".

Последний раз редактировалось TinMan; 10.11.2011 в 01:37.
TinMan вне форума Ответить с цитированием
Старый 10.11.2011, 01:39   #4
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от Хамяг Посмотреть сообщение
ещё типы нужно к Integer привести, в примере я показал это.
А зачем?
Если не вычитать из более раннего более позднее - то совершенно не надо..
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 10.11.2011, 09:52   #5
Хамяг
Форумчанин
 
Аватар для Хамяг
 
Регистрация: 22.08.2008
Сообщений: 105
По умолчанию

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

Хотя, возможно, такая проблема только при выводе напрямую, без дополнительных переменных.

А дату проверять - по желанию. Думаю, автор по аналогии мог бы и сам с датой догадаться сделать .
Хамяг вне форума Ответить с цитированием
Старый 13.11.2011, 17:03   #6
BlackFishSQL
Форумчанин
 
Аватар для BlackFishSQL
 
Регистрация: 02.04.2011
Сообщений: 136
По умолчанию

Помогите прилепить этот код что бы он работал! выкидывает всё время! вот код сортировки через процедуры и файлы!
Код:
Program sortirovka_viborom;
Type mas=array [1..1000] of integer;
Var A:mas;
    i,n:integer;
    F1,F2:Text;

    Procedure Vvod(var B:mas);
Begin
 writeln(F2,'начальный массив');
 Randomize;
 for i:=1 to n do
  begin
   B[i]:=random(101);
   write(B[i]:4);
  end;
 writeln(F2);
End;

Procedure Sort(var B:mas);
Var max,k,m,j:integer;
Begin
 for i:=1 to n-1 do
  begin
   max:=B[i]; k:=i;
   for j:=i+1 to n do
    if B[j]>max then begin
                      max:=B[j]; k:=j;
                     end;
   B[k]:=B[i]; B[i]:=max;
   for m:=1 to n do write(F2,B[m]:4);
   writeln(F2);
  end;
End;

Begin
 Assign(F1,'input.txt');
 Reset(F1);
 Assign(F2,'output.txt');
 Rewrite(F2);
 read(F1,n);
 Vvod(A);
 Sort(A);
 Close(F2);
end.
BlackFishSQL вне форума Ответить с цитированием
Старый 14.11.2011, 17:56   #7
BlackFishSQL
Форумчанин
 
Аватар для BlackFishSQL
 
Регистрация: 02.04.2011
Сообщений: 136
По умолчанию

Ребята помогите приделать код сюда!!!
BlackFishSQL вне форума Ответить с цитированием
Старый 15.11.2011, 23:33   #8
BlackFishSQL
Форумчанин
 
Аватар для BlackFishSQL
 
Регистрация: 02.04.2011
Сообщений: 136
По умолчанию

Код Хомяга выдаёт числа с минусом! почему???
BlackFishSQL вне форума Ответить с цитированием
Старый 27.11.2011, 19:35   #9
BlackFishSQL
Форумчанин
 
Аватар для BlackFishSQL
 
Регистрация: 02.04.2011
Сообщений: 136
По умолчанию

А скажите функция GetTime миллисекунды до сотых показывает! а есть способ какой-нибудь что бы после запятой больше знаков было хотя бы ты 0.0000?
BlackFishSQL вне форума Ответить с цитированием
Старый 27.11.2011, 22:35   #10
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

есть ещё GetTickCount(), +\- 10 мс, переполняется раз в 33 дня

(а, блин, речь про ДОС. Когда она уже здохнет )
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."

Последний раз редактировалось veniside; 27.11.2011 в 22:37.
veniside вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание объектов во время выполнения программы Anubys C++ Builder 3 07.09.2011 21:07
как удалить объект во время выполнения программы на AS 2.0 ALKOrobot JavaScript, Ajax 0 11.07.2011 01:09
Время выполнения программы. Небесный Паскаль, Turbo Pascal, PascalABC.NET 3 12.05.2011 09:39
Время выполнения программы Zhamie Общие вопросы Delphi 8 15.09.2009 15:26
Как замерить время выполнения программы Gracel Общие вопросы Delphi 5 12.06.2007 22:16