Главная страница
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.018 c
3-98528
Брат
2003-10-08 16:43
2003.10.30
Как сделать чтобы в таблице не выводило INF и NAN?


9-98425
Fennek^Red
2003-04-24 15:43
2003.10.30
InvalidateRect


1-98684
leonidus
2003-10-21 00:46
2003.10.30
Может вопрос глупый или у меня глюки, но проблема есть...


4-98920
SH
2003-08-26 17:34
2003.10.30
TMemo - цветные строки и слова


7-98913
vitnt
2003-08-20 09:15
2003.10.30
Подскажите алгоритм расчета CRC-16 для ModBus