Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 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
1-98640
axx
2003-10-17 13:42
2003.10.30
Плз помогите с MDI интерфейсом


1-98623
Василиск
2003-10-17 15:39
2003.10.30
Какая API функция возвращает путь, в кот. устанавливаются проги?


1-98674
ИМГусак
2003-10-21 13:21
2003.10.30
Простите, очень срочно


14-98871
Dmitriy O.
2003-09-25 08:55
2003.10.30
Кто делал что то в первые в мире программинга ?


3-98523
nortsov
2003-10-08 08:50
2003.10.30
проблема, update для обновления записей в связанных таблицах





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский