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

Вниз

Реальный счёт сотых долей секунды   Найти похожие ветки 

 
Vl_Kr ©   (2003-08-05 18:46) [0]

Уважаемые господа.
Помогите решить задачу учёта времени между событиями с точностью до сотых долей секунды. Реально-ли решить эту проблему для параллельных процессов. События фиксируются приходом информации на последовательный порт.


 
Лёша ©   (2003-08-05 19:10) [1]

попробуй:
function MilliSecondsBetween(const ANow, AThen: TDateTime): Int64;
Returns the number of milliseconds between two specified TDateTime values.


 
Anatoly Podgoretsky ©   (2003-08-05 19:13) [2]

Сотые и миллиардные доли получить не сложно, а вот насчет точности здесь есть непреодолимое препятствие в лице ОС


 
miek ©   (2003-08-05 20:09) [3]

Есть прекрасные функции QueryPerformanceCounter, QueryPerformanceFrequency. Дают разрешение до 1МГц. Если и этого не хватает, используйте ассемблерную инструкцию RDTSC.


 
Vl_Kr ©   (2003-08-06 12:15) [4]

Спасибо, буду учиться.


 
VuDZ ©   (2003-08-10 19:52) [5]

я извеняюсь, пиво и всё такое, но чем не подходит GetTickCount()? Или использовать мулимедиа таймеры...


 
Viktorious   (2003-08-16 16:48) [6]

->VuDZ:но чем не подходит GetTickCount()? Или использовать мультимедиа таймеры...

GetTickCount (и стандартные виндовые таймеры) дают точность до 1/12 секунды (по-моему), на частоте 12Гц работает основной таймер компьютера.
Мультимедиа-таймеры дают точность до тысячной доли секунды.
Функции QueryPerfomanceCounter дают разрешение около 50 кГц - это зависит от компьютера, на Celeron 1000MHz разрещение около 3МГц.

Наиболее точный метод - ассемблерная команда RDTSC. Это счетчик, который увеличивается на 1 при каждом такте процессора, его значение и считывается этой командой. То есть если у тебя гигагерцовый проц, интервалы времени можно измерять с точностью до 1 наносекунды! Если Pentium 100 - то с точностью до десятков наносекунд.


 
miek ©   (2003-08-16 21:05) [7]

QueryPerformanceTimer дают не 50КГц, а 1МГц - это же определяется микросхемой таймера, а у нее именно такое разрешение.

Насчет RDTSC все верно. Сам пользуюсь постоянно. Только есть две тонкости - 1) подгружать все данные и код в кэш перед началом измерений 2) перел измерением повышать приоритет своего процесса до Highest



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

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

Наверх




Память: 0.48 MB
Время: 0.016 c
3-98503
Кирилл
2003-10-09 13:02
2003.10.30
потерян пароль


7-98896
vvvvvvvvv
2003-08-06 12:33
2003.10.30
Как отследить копирование-перенос файлов в системе?


14-98793
Gfa
2003-10-04 19:37
2003.10.30
MyIE


14-98856
Иван Помидоров
2003-10-10 23:39
2003.10.30
Еще одна прикольная ссылочка


14-98797
Сатир
2003-10-10 14:41
2003.10.30
Профессор Башкирского университета опроверг основы физики и химии