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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.09.2009, 10:52   #1
Zhamie
Пользователь
 
Регистрация: 20.07.2009
Сообщений: 17
Счастье Время выполнения программы

Всем привет!!!

Помогите пожалуйста зафиксировать время начала и конца вполнения программы. У меня сложные вычисления и мне нужно знать сколько это занимает.
Zhamie вне форума Ответить с цитированием
Старый 15.09.2009, 11:50   #2
Zhamie
Пользователь
 
Регистрация: 20.07.2009
Сообщений: 17
По умолчанию

Я думаю вот так будет правильно:

Код:
var 
today : TDateTime;

begin
today := Time;
Memo2.Lines.Add('Время начала = '+TimeToStr(today));
.....
.....
.....
Memo2.Lines.Add('Время конца = '+TimeToStr(today));
end.
Как вы думаете???

Последний раз редактировалось Stilet; 15.09.2009 в 12:02.
Zhamie вне форума Ответить с цитированием
Старый 15.09.2009, 11:55   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

на будущее, тут и Дельфи/Паскаль и С/С++ и прочие(Java,PHP,...) встречаются...

можно чтото типа такого(глобалка)
Код:
var TimeStart:LongWord;
в начале проги
Код:
TimeStart:=GetTickCount;
в конце
Код:
<время в миллисикундах...куда выводить решайте сами>:=GetTickCount-TimeStart;
например ShowMessage(IntToStr(GetTickCount-TimeStart));
Цитата:
Я думаю вот так будет правильно:
тоже можно, но не использую такой метод
+исправте его всетаки
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 15.09.2009 в 12:01.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.09.2009, 11:58   #4
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

Варианта 2:
1. Повесить на форму таймер System->Timer и пользоваться его функциями.
2. Написать свой класс и создать переменную вашего класса
Что-то типа вот такого:
Код:
type
  TTimer = Class(TObject)
    t0: DWord;
  public
    procedure SetTimer;
    function GetDelay: Cardinal;
  end;
реализация методов вот такая:
Код:
function TTimer.GetDelay: Cardinal;
begin
  GetDelay:= GetTickCount-t0;
end;

procedure TTimer.SetTimer;
begin
  t0:=GetTickCount;
end;
P.S. ЫЫЫ, пока писал еще 2 поста появилось, и это за 10 минут

Последний раз редактировалось mMAg; 15.09.2009 в 12:01.
mMAg вне форума Ответить с цитированием
Старый 15.09.2009, 12:06   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

mMAg, зачем все усложнять?
Цитата:
Варианта 2:
их значительно больше
Цитата:
1. Повесить на форму таймер System->Timer и пользоваться его функциями.
точность низкая, могут быть траблы.
Цитата:
2 вариант
мне более менее, но ТС заморачиватся с ним это лишнее(конструктор то и прочее)

PS:в моем как и втором варианте от mMAg миллисекунды идут
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.09.2009, 12:25   #6
Zhamie
Пользователь
 
Регистрация: 20.07.2009
Сообщений: 17
Радость

Спасибо большое!!! Обязательно воспользуюсь.
Zhamie вне форума Ответить с цитированием
Старый 15.09.2009, 12:48   #7
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Unix-way
Цитата:
JTG@work /cygdrive/d/temp
$ time ./test.exe

real 0m2.135s
user 0m0.046s
sys 0m0.000s
пыщь
JTG вне форума Ответить с цитированием
Старый 15.09.2009, 13:32   #8
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

Цитата:
их значительно больше
Я не сомневаюсь, что их значительно больше. Я имел ввиду, что я приведу 2 варианта. Может немного неправильно выразился.
Цитата:
мне более менее, но ТС заморачиватся с ним это лишнее(конструктор то и прочее)
Ваш вариант для решения поставленной задачи лучше, это факт. Этот класс кастрированный получился, ибо все полезное, что в нем было я обрезал для того, чтобы не загромождать тут лишнего. В итоге осталась только одна функция GetTickCount. Действительно для таких нужд класс создавать нецелесообразно.
mMAg вне форума Ответить с цитированием
Старый 15.09.2009, 15:26   #9
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

Пользовался таким кодом.
Код:
Var
T1,T2,Fr:Int64;
Code_time:Double;

function RDTSC: Int64; register; //Получение количество тактов процессора, со времени его включения
 asm
   rdtsc
 end;

begin
//Узнаем частоту
T1:=RDTSC;
sleep(1000);
T2:=RDTSC;
Fr:=T2-T1;

T1:=RDTSC;
//Тут выполняем код, время исполнения которого нужно узнать
//
Sleep(10);
T2:=RDTSC;
Code_Time:=(T2-T1)/Fr*1000;
ShowMessage('код выполнялся '+FloatToStr(Code_Time)+' мс');

end;
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Время выполнения макроса... nikolai_P Microsoft Office Excel 9 03.04.2013 00:59
Время выполнения Goodwin98 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 16 21.06.2009 08:41
Как создать компонент в ран-тайме (во время выполнения программы) Ky3Heu, Общие вопросы Delphi 2 02.04.2009 12:12
Как удалить вкладку TabSheet во время выполнения программы SibBear Общие вопросы Delphi 27 18.03.2009 17:28
Как замерить время выполнения программы Gracel Общие вопросы Delphi 5 12.06.2007 22:16