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

Вниз

Замерить время выполнения!   Найти похожие ветки 

 
emergenter ©   (2003-12-25 10:52) [0]

Подскажите пожалуйста как замерить время (в тиках или нсек или милисек или ) куска выполнения программы. Заранее спасибо.


 
Silver Alex ©   (2003-12-25 10:55) [1]

var
n: Cardinal;
begin
n:=GetTickCount;
...
Result:=GetTickCount-n;


 
mrcat ©   (2003-12-25 10:56) [2]

см. rdtsc


 
emergenter ©   (2003-12-25 10:56) [3]

большое спасибо!!


 
emergenter ©   (2003-12-25 10:57) [4]

так rdtsc - это в тактах!!!!


 
mrcat ©   (2003-12-25 10:59) [5]

~ 1/1600000000 - чем не наносекунды ? ;)


 
emergenter ©   (2003-12-25 11:01) [6]

Что-то такой функции нету
GetTickCount...


 
emergenter ©   (2003-12-25 11:02) [7]

mrcat ©
Так это на Асме надо! правильно?


 
Silver Alex ©   (2003-12-25 11:04) [8]


> Что-то такой функции нету
> GetTickCount...

в модуле Windows живет (в D7)


 
NoIdeaAboutName   (2003-12-25 11:06) [9]

"Что-то такой функции нету"

а ты подключи модуль mmsystem


 
emergenter ©   (2003-12-25 11:12) [10]

Я так понимаю результат в тиках??? а как перевести в наносекунды или в милисекунды??? Тик - это сколько?


 
Silver Alex ©   (2003-12-25 11:16) [11]

результат в милисекундах как раз


 
Anatoly Podgoretsky ©   (2003-12-25 11:17) [12]

emergenter © (25.12.03 11:12) [10]
Надо калибровать, измерив количество тактов за интервал, но это счетчик с самым максимальным разрешением в компьютере, к тому же он не зависит от загрузки системы, поскольку аппаратный.

Посмотри еще QueryPerformanceCounter


 
emergenter ©   (2003-12-25 11:20) [13]

я делаю так!!!
var
i : integer;
n1 : Cardinal;
n2 : Cardinal;

begin
n1:=GetTickCount();
for i:=0 to 1000 do
....моя функция, кот надо измерить...
n2:=GetTickCount()-n1;

end;

И что то вроде как нет то !!! Результаты могут быть
16, 390, 1640...
Поправьте если что не так...


 
MV   (2003-12-25 11:32) [14]

А если вместо GetTickCount использовать Now ?
Толку-то в наносекундах, если эти тики 60 раз в секунду происходят... И точнее - нельзя, хоть убейся.


 
Silver Alex ©   (2003-12-25 11:37) [15]


> MV (25.12.03 11:32) [14]
> А если вместо GetTickCount использовать Now ?

ну попробуй, потом расскажешь


 
Brahman ©   (2003-12-25 13:37) [16]

Выдернул.. думаю разберетесь.
Не учтены ньюансы, связанные с вызовом, но это второе..

function TtsvTimer.GetFactor:int64;
begin
fFactor := CPUClockFrequency div 1000;
Result := fFactor;
end;

function TtsvTimer.CPUClockFrequency: Int64;
begin
QueryPerformanceFrequency( Result );
end;

function TtsvTimer.GetTick: Int64;
var i : Int64;
begin
QueryPerformanceCounter (I);
Result := i - fElapseStart;
end;

// Measure time in [us]
function TtsvTimer.TimeElapseduS: LongWord;
begin
Result := (GetTick*1000) div fFactor;
end;

// Measure time in [ms]
function TtsvTimer.TimeElapsed: LongWord;
begin
Result := GetTick div fFactor;
end;

// Measure time in [s]
function TtsvTimer.TimeElapsedS: LongWord;
begin
Result := ((GetTick div fFactor) div 1000);
end;



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

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

Наверх




Память: 0.5 MB
Время: 0.021 c
4-25650
Prov
2003-11-06 09:35
2004.01.09
MessageBoxIndirect - don t work


14-25512
Думкин
2003-12-16 07:03
2004.01.09
С днем рождения! 16 декабря.


9-25167
Жека
2003-06-18 21:24
2004.01.09
Анимация 3d моделей.


6-25483
Vladimir Bolotin
2003-11-05 22:10
2004.01.09
IMAP: удаление писем с сервера


1-25348
SergLight
2003-12-22 11:32
2004.01.09
Ошибка в TCombobox