Главная страница
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
1-98605
real_qwerty
2003-10-19 13:51
2003.10.30
shl и shr .Help Please


3-98499
Данила
2003-10-08 15:21
2003.10.30
Поиск в Access e


1-98648
REA
2003-10-21 15:19
2003.10.30
TOleContainer


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


3-98502
explorer
2003-10-09 13:40
2003.10.30
Update данных