Главная страница
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.019 c
14-98791
Zn
2003-10-13 15:50
2003.10.30
Как подключить quikview в Office 2000?


3-98484
micklushka
2003-10-09 16:05
2003.10.30
informix conect without ODBC


4-98943
Slym
2003-08-27 09:39
2003.10.30
Визуальный строитель диалогов...


1-98630
Малиновский Владимир
2003-10-13 17:50
2003.10.30
Создание компонент - собственные формы (или фреймы),


3-98451
artem
2003-10-10 08:53
2003.10.30
ODBC