Текущий архив: 2009.01.18;
Скачать: CL | DM;
Вниз
Время выполнения процесса Найти похожие ветки
← →
Mixali4 (2008-03-02 22:39) [0]Как узнать сколько времени выполняется какой либо процесс (функция, цикл и т.д.)? Или как хотя бы определить системное время с точностью больше чем 10 в минус 3 секунды?
Спасибо
← →
Игорь Шевченко © (2008-03-02 23:33) [1]
> Как узнать сколько времени выполняется какой либо процесс
GetProcessTimes
> (функция, цикл и т.д.)?
> Или как хотя бы определить системное время с точностью больше
> чем 10 в минус 3 секунды?
Использовать команду rdtsc
function GetRdTsc: int64; assembler;
asm
DW 310Fh
end;
var
StartTsc, DiffTsc: int64;
...
begin
Перед началом процесса
StartTsc := GetRdTsc;
..процесс..
DiffTsc := GetRdTsc - StartTsc;
end;
Переменная Difftsc содержит количество тактов процессора, затраченных на время выполнения. Зная тактовую частоту процессора можно вычислить время выполнения.
← →
Anatoly Podgoretsky © (2008-03-03 00:17) [2]В Д7 rdtsc доступно без кодирования константой.
← →
Игорь Шевченко © (2008-03-03 00:59) [3]Anatoly Podgoretsky © (03.03.08 00:17) [2]
Виноват, исправляюсь:)
function GetRdtsc: int64; assembler;
asm
rdtsc
end;
← →
Anatoly Podgoretsky © (2008-03-03 01:47) [4]> Игорь Шевченко (03.03.2008 00:59:03) [3]
Ну и чтобы не связываться с ассемблером, использовать GetPerformanceCounter
чаще всего это почти одно и тоже. Только rdtsc может измерять более тонкие интервалы времени.
← →
Anatoly Podgoretsky © (2008-03-03 01:48) [5]И еще одно маленькое замечание, слово assembler не нужно.
← →
Германн © (2008-03-03 02:35) [6]
> Anatoly Podgoretsky © (03.03.08 01:48) [5]
>
> И еще одно маленькое замечание, слово assembler не нужно.
>
>
Это уже удар ниже пояса! :(
Страницы: 1 вся ветка
Текущий архив: 2009.01.18;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.005 c