88 / 65 / 2
Регистрация: 04.01.2010
Сообщений: 265
|
|
1 | |
Засечь время с точностью в миллисекунду13.07.2012, 12:52. Показов 12189. Ответов 11
Метки нет (Все метки)
Необходимо отметить две временные точки и вычислить разницу между ними в миллисекундах.
Разница может быть от 20 мс и выше, так что необходима очень быстрая функция. Что рассмотрел: Get{Local,System}Time - Здорово, но возвращает результат в _SYSTEMTIME, который есть структура и просто так разницу в миллисекундах в нем не вычислишь. Now - Круто, возвращает результат в Double (что в принципе ересь, но ладно) - но долго работает, ибо в своих кишках имеет GetLocalTime и перевод в цикле из _SYSTEMTIME в Double. GetTickCount - Зависит от частоты процессора. И даже, если её знать теоретически она может меняться при параметрах энергосбережения. Есть вообще в Delphi нормальные способы засекать время быстро и точно?
0
|
13.07.2012, 12:52 | |
Ответы с готовыми решениями:
11
Нужно засечь время выполнения процедуры Клик мышки в заданное время с точностью миллисекундах Засечь время от начала одной операции до окончания другой Измерить время с точностью до сотой секунды без API |
Puporev
|
13.07.2012, 12:57
#2
|
0
|
88 / 65 / 2
Регистрация: 04.01.2010
Сообщений: 265
|
|
13.07.2012, 12:59 [ТС] | 3 |
Это почему вдруг? Приведенные мною выше способы позволяют получить точность в миллисекунду, но не подходят по другим причинам.
0
|
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
|
|
13.07.2012, 13:05 | 4 |
0
|
88 / 65 / 2
Регистрация: 04.01.2010
Сообщений: 265
|
|
13.07.2012, 13:07 [ТС] | 5 |
0
|
4165 / 1817 / 216
Регистрация: 06.10.2010
Сообщений: 4,074
|
|
13.07.2012, 13:18 | 6 |
0
|
88 / 65 / 2
Регистрация: 04.01.2010
Сообщений: 265
|
|
13.07.2012, 13:43 [ТС] | 7 |
Спасибо, но разрешение у него какое? Соответствует lpTimeIncrement из GetSystemTimeAdjustment?
0
|
88 / 65 / 2
Регистрация: 04.01.2010
Сообщений: 265
|
|
13.07.2012, 13:57 [ТС] | 9 |
Мне такое не подойдет. Процесс, который будет делать отметки будет крутиться в фоне постоянно, а отдавать при этом большое количество ресурсов процессора и памяти только на то, чтобы повысить точность на 1-2 мс нецелесообразно.
0
|
4165 / 1817 / 216
Регистрация: 06.10.2010
Сообщений: 4,074
|
||||||
13.07.2012, 14:08 | 10 | |||||
Кажется ещё так можно
Сейчас заметил, что QueryPerformanceFrequency - это процедура. Ну короче ты понял идею.
0
|
88 / 65 / 2
Регистрация: 04.01.2010
Сообщений: 265
|
|
13.07.2012, 14:32 [ТС] | 11 |
Идея не очень. Её "качество" отличается на разных операционках, процессорах, режимах работы: http://www.virtualdub.org/blog... php?id=106
0
|
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
|
||||||
13.07.2012, 17:15 | 12 | |||||
Показания QueryPerformanceFrequency() всё-таки могут плавать при переходе процессора между различными режимами энергопотребления. Хотя Микрософт и утверждает обратное. Особенно это касается ноутбуков. Эта тема на разных форумах обсуждалась.
--- Пример применения QueryPerformanceFrequency() и QueryPerformanceCounter() :
Можно воспользоваться методом, который предложил murderer - с применением timeBeginPeriod() - timeGetTime() - timeEndPeriod().
0
|
13.07.2012, 17:15 | |
13.07.2012, 17:15 | |
Помогаю со студенческими работами здесь
12
Засечь время Засечь время работы метода Засечь время выполнения поиска Засечь время выполнения пирамидальной сортировки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |