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

Вниз

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

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

Наверх





Память: 0.47 MB
Время: 0.011 c
1-25406
Иваныч
2003-12-24 09:54
2004.01.09
Вызов процедуры!!!


8-25451
NikB
2003-09-09 01:02
2004.01.09
Point In Poligon


3-25232
axx
2003-12-11 11:31
2004.01.09
Люди помогите с хранимой процедурой.


1-25304
SoS
2003-12-22 18:35
2004.01.09
А где взять TSpinEdit ?


7-25621
maxon
2003-10-22 09:50
2004.01.09
Диспетчер задач





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский