Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.10.06;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.007 c
14-18602
AZ
2003-09-17 20:27
2003.10.06
Вечность


1-18317
dan
2003-09-23 21:44
2003.10.06
delphi7


14-18642
Petro1
2003-09-17 08:34
2003.10.06
Про злобного админа


14-18604
E_Dimon
2003-09-17 12:50
2003.10.06
Ошибка в Windows 2000


14-18575
wnew
2003-09-17 22:59
2003.10.06
Их общее прошлое - это Древняя Русь.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский