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

Вниз

Time in Delphi   Найти похожие ветки 

 
puny   (2003-09-22 13:54) [0]

Подскажите пожалуйста как установить вот такой таймер: в начале процедуры он запускается в конце процедуры останавливается и записывает то что посчитал в какуую-нибудь переменную.
Возможно ли это? или придется с системным временем мучаться?


 
Verg ©   (2003-09-22 13:58) [1]

var SomeVar : DWORD;

begin
SomeVar:=GetTickCount;
................
SomeVar:=GetTickCount-SomeVar;
end;


 
ZEE ©   (2003-09-22 13:59) [2]

а TTimer это не то что ли?


 
puny   (2003-09-22 14:13) [3]

Verg!
у меня почему то 0 выдается. а милисекунды считаются? я пишу bench mark test и поэтому очень важно, чтобы считались милисек. возможно до сек. округляется поэтому и 0 получается.


 
Erik   (2003-09-22 14:24) [4]

Разумеется считаются, можно вместо DWORD поставить Cardinal. Но разницы нет. Как ты выдаеш результат?


 
puny   (2003-09-22 14:27) [5]

Erik!
в edit1.text:=floattostr(SomeVar).
получается 0 :(


 
Jeer ©   (2003-09-22 14:31) [6]

Разрешающая способность TTimer или MMediaTimer - 1 ms.
Если надо точнее - QueryPerformanceCounter


 
Erik   (2003-09-22 15:02) [7]

Почему Float?!!! У тебя же целое число! IntToStr() - используй.


 
puny   (2003-09-22 15:39) [8]

все равно 0. Кошмар какой-то :( что делать??? help me.....


 
ZEE ©   (2003-09-22 15:47) [9]

>puny (22.09.03 15:39) [8]

procedure TForm1.Button1Click(Sender: TObject);
var SomeVar : DWORD;
begin
SomeVar:=GetTickCount;
sleep(1000);
SomeVar:=GetTickCount-SomeVar;
ShowMessage(IntToStr(SomeVar));
end;


проверено - работает, а что у тебя не так - смотри свой код
(ищи ошибку в 17-ой строке :)


 
icWasya ©   (2003-09-22 15:56) [10]

можно попробовать считать такты процессора

function RDTSC:Int64;assembler;asm db 0fh,31h; end;


 
Verg ©   (2003-09-22 16:04) [11]


> все равно 0. Кошмар какой-то :( что делать??? help me.....


Наверно процедура "пролетает" за время меньшее, чем миллисекунда, что вполне реально.

Тогда надо использовать QueryPerformanceCounter, как говорил

> Jeer © (22.09.03 14:31) [6]


var SomeVarBeg, SomeVarEnd : TLargeInteger;
begin
QueryPerformanceCounter(SomeVarBeg);
................
QueryPerformanceCounter(SomeVarEnd);
SomeVarend:=(SomeVarEnd-SomeVarBeg) and high(TLargeInteger);
end;


 
puny   (2003-09-22 16:18) [12]

УРА УРА УРА!!!!!!!!!! все теперь работает:)
Огромное спасибо МАСТЕРА :)


 
Bel ©   (2003-09-22 16:30) [13]

Насколько я помню, специфика GetTickCount в том, что интервалы меньше 55 мс он не определяет.


 
ZEE ©   (2003-09-22 16:35) [14]

> Bel © (22.09.03 16:30) [13]
> Насколько я помню, специфика GetTickCount в том, что интервалы
> меньше 55 мс он не определяет.
Это для Win9x - 55ms (кажись и для NT), а для 2K,XP - 1ms


 
puny   (2003-09-23 14:26) [15]

вот еще вопросик появился . зачем нужно писать and high(TLargeInteger)? и еще.. почему то при первом запуске программы показываются одни рез-ты (у меня подряд ,в одной процедуре, сначала ставится таймер на сложеение матриц(сколько по времени это будет деелать комп), потом на поиск подстроки в строке и потом на загрузку изображения, все идет одно за дрругим, в рез-те получаается 3 переменных с временем), при второй другие и т.д, т.е всегда раазные рез-ты . голову сижу ломаю... понять не могу никак...
В чем тут может быть дело?


 
[lamer]Barmaglot ©   (2003-09-23 15:15) [16]

Так и должно быть, Windows то в это время тоже работает...
Насчет TLargeInteger посмотри его описание (дело в том, что процедура может быть слишком длительной для интеджера...)


 
NAlexey ©   (2003-09-23 16:13) [17]

А к стати, как ты приводишь разницу ко времени?


 
puny   (2003-09-23 22:30) [18]

вот так
timetest3:=(timeendT3-timebegT3) and high(TLargeInteger)


 
NAlexey ©   (2003-09-24 07:50) [19]

>timetest3:=(timeendT3-timebegT3) and high(TLargeInteger)
это у тебя попугаи какието получаются, а не время...



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

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

Наверх




Память: 0.5 MB
Время: 0.021 c
14-18558
Ashtray
2003-09-18 17:58
2003.10.06
СУБД Cache


14-18565
Юрий Зотов
2003-07-06 13:32
2003.10.06
---|Ветка была без названия|---


3-18244
k_len
2003-09-16 11:36
2003.10.06
Отчеты


14-18610
Alex
2003-09-18 01:57
2003.10.06
Поиск


1-18408
programer2k
2003-09-25 15:47
2003.10.06
логарифмы в Паскале