Форум: "Основная";
Текущий архив: 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.008 c