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