Главная страница
    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.016 c
1-25338
Кен
2003-12-08 06:30
2004.01.09
Как можно БЫСТРО найти в массиве одинаковые числа ?


7-25618
cdadmitriy
2003-10-27 15:49
2004.01.09
Sniffer for Com port


3-25217
k_len
2003-12-11 14:35
2004.01.09
Создавать таблицы или нет


6-25472
Кен
2003-11-07 02:34
2004.01.09
TWebbrowser Как отловить ссылку на которую кликнул пользователь ?


1-25292
niko4543
2003-12-23 05:43
2004.01.09
Пример генерация не повторяющихся случайных чисел в Delphi





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