Форум: "Система";
Текущий архив: 2003.10.30;
Скачать: [xml.tar.bz2];
Вниз
Реальный счёт сотых долей секунды Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.012 c