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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2011, 12:22   #1
Небесный
Зелень
Форумчанин
 
Аватар для Небесный
 
Регистрация: 03.02.2007
Сообщений: 302
По умолчанию Время выполнения программы.

Задался таким вопросом: "Как посчитать время выполнения программы?"
Ну, вроде то и задача простая, взять время начало и конца программы - разница этих времен и будет время выполнения программы.
К своему огорчению - понял, что задача не так уж и простая ибо программа настолько быстро выполняется, что разница во времени составляет 0. (((

Вот пример программы:
Код:
uses crt, dos;
var
   hour,min,sec,hund: word;
   a,i: longint;
   t,t1,t2: real;
begin
     clrscr;
     a:=0;
     gettime(hour,min,sec,hund);
     writeln(hour,':',min,':',sec,':',hund);
     t1:=sec + hour*0.01 + min*60 + hour*3600;
     writeln('t1=',t1:0:10);
     for i:=0 to 1000000 do
         a:=a+1;
     for i:=0 to 1000000 do
         a:=a+1;
     for i:=0 to 1000000 do
         a:=a+1;
     for i:=0 to 1000000 do
         a:=a+1;
     for i:=0 to 1000000 do
         a:=a+1;
     writeln;
     gettime(hour,min,sec,hund);
     writeln(hour,':',min,':',sec,':',hund);
     t2:=sec + hour*0.01 + min*60 + hour*3600;
     writeln('t2=',t2:0:10);
     t:=t2-t1;
     writeln('t=',t);
     readln;
end.
Может кто-то подскажет, другой способ более правильный.
Благодарю за внимание и ответы!!!

ЗЫ: А, ну еще с праздником ПОБЕДЫ.
Небесный вне форума Ответить с цитированием
Старый 10.05.2011, 18:25   #2
MoBLer
Пользователь
 
Аватар для MoBLer
 
Регистрация: 30.12.2010
Сообщений: 91
По умолчанию

Код:
uses crt, dos;
var
   h,m,s,ms: word;
   a,i: longint;
   t,t1,t2: real;
begin
     clrscr;
     a:=0;
     gettime(h,m,s,ms);
     writeln(h,':',m,':',s,':',ms);
     t1:=ms+100 * (s + 60 * (m + 60 * h));
     writeln('t1=',t1:0:10);
      delay(55000);
     for i:=0 to 1000000 do
         a:=a+1;
     for i:=0 to 1000000 do
         a:=a+1;
     for i:=0 to 1000000 do
         a:=a+1;
     for i:=0 to 1000000 do
         a:=a+1;
     for i:=0 to 1000000 do
         a:=a+1;
     writeln;
     gettime(h,m,s,ms);
     writeln(h,':',m,':',s,':',ms);
     t2:=ms + 100 * (s + 60 * (m + 60 * h));
     writeln('t2=',t2:0:10);
     t:=t2-t1;
     writeln('t=',t);
     readln;
end.
для наглядности используем delay т.к. время выполнения очень очень маленькое.
Я предлагаю такой код он берет время сразу из памяти
Код:
uses crt, dos;
var
   hour,min,sec,hund: word;
   a,c,i,t: longint;
   t1,t2: real;
begin
     clrscr;
     a:=0;
     t:=meml[0:$046C];
     delay(50000);delay(50000);delay(50000);delay(50000);delay(50000);delay(50000);
     for i:=0 to 1000000 do
         a:=a+1;
     for i:=0 to 1000000 do
         c:=a+1;
     for i:=0 to 1000000 do
         a:=c+1;
     for i:=0 to 1000000 do
         a:=a+1;
     for i:=0 to 1000000 do
         a:=a+1;
     t:=meml[0:$046C]-t;
     writeln('t=',(t/18.2):6:4);
     readln;
end.
Время в секундах
Я тебе помог, добавь отзыв)))))
Статьи по программированию
MoBLer вне форума Ответить с цитированием
Старый 11.05.2011, 23:32   #3
Небесный
Зелень
Форумчанин
 
Аватар для Небесный
 
Регистрация: 03.02.2007
Сообщений: 302
По умолчанию

Не пойму зачем делать задержку?
Мне надо посчитать время некоторых участков кода, и сравнивать их между собой по времени выполнения. Надо какой-то сверхточный метод вычисления времени в наносекундах - я так подозреваю.
За эти дни поиска, я так и не нашел решения. (((
Небесный вне форума Ответить с цитированием
Старый 12.05.2011, 09:39   #4
MoBLer
Пользователь
 
Аватар для MoBLer
 
Регистрация: 30.12.2010
Сообщений: 91
По умолчанию

Нано секунды оО delay потому что ваш код выполняется очень быстро и мы нечего не увидим. gettime(часы,минуты,секунды,милисек унды) значит минимальное время которое можем найти в милисекундах. Наверное вам надо использовать ассемблерские вставки для такой точности.
Я тебе помог, добавь отзыв)))))
Статьи по программированию
MoBLer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание объектов во время выполнения программы Anubys C++ Builder 3 07.09.2011 21:07
Изменение Version Info во время выполнения программы на Delphi Stim777 Общие вопросы Delphi 3 11.01.2011 20:24
Компиляция файла asm в obj во время выполнения программы searkand Общие вопросы C/C++ 5 14.10.2010 20:15
Время выполнения программы Zhamie Общие вопросы Delphi 8 15.09.2009 15:26
Как замерить время выполнения программы Gracel Общие вопросы Delphi 5 12.06.2007 22:16