Функция GetTickCount

У меня вопрос по поводу функции GetTickCount, У меня есть два вызова этой функции в моем коде с несколькими командами между ними, и функция в обоих вызовах возвращает одинаковое количество. то есть

var1 = GetTickCount();
code
:
:
var2 = GetTickCount();

var1 и var2 имеют одинаковые значения.

может кто-то помочь?

7
задан greatwolf 14 September 2013 в 20:43
поделиться

5 ответов

Предполагая, что это вызов Windows GetTickCount , это вполне разумно:

Разрешение GetTickCount функция ограничена разрешением системного таймера, который обычно в диапазоне 10 от миллисекунд до 16 миллисекунд.

Обратите внимание, что для начала это всего лишь миллисекунды - а в наши дни вы можете сделать очень много за миллисекунду.

В документации говорится:

Если вам нужен таймер с более высоким разрешением, использовать мультимедийный таймер или таймер высокого разрешения .

Может быть, QueryPerformanceCounter будет более подходящим?

16
ответ дан 6 December 2019 в 06:23
поделиться

Если вы имеете в виду вызов Windows API, прочтите это . Я предполагаю, что вы пытаетесь отсчитать короткий интервал, поэтому этот абзац актуален. Вы рассчитываете что-то короче этого интервала? Если это так, возможно, вместо этого загляните в QueryPerformanceCounter.

Разрешение GetTickCount функция ограничена разрешением системного таймера, который обычно в диапазоне 10 от миллисекунд до 16 миллисекунд. В разрешение GetTickCount функция не зависит от корректировки, внесенные Функция GetSystemTimeAdjustment.

6
ответ дан 6 December 2019 в 06:23
поделиться

Из MSDN

Разрешение GetTickCount функция ограничена разрешением системного таймера, который обычно в диапазоне 10 от миллисекунд до 16 миллисекунд. В разрешение GetTickCount функция не зависит от корректировки, внесенные Функция GetSystemTimeAdjustment.

Истекшее время сохраняется как DWORD. ценность. Поэтому время подойдет около нуля, если система запущена непрерывно в течение 49,7 суток. Избегать эту проблему используйте GetTickCount64 функция. В противном случае проверьте наличие состояние переполнения при сравнении раз.

Если вам нужен таймер с более высоким разрешением, использовать мультимедийный таймер или таймер высокого разрешения.

2
ответ дан 6 December 2019 в 06:23
поделиться

GetTickCount имеет разрешение в одну миллисекунду (на практике это несколько миллисекунд). Весьма вероятно, что функции, которые вы вызываете между ними, занимают значительно меньше 1 миллисекунды.

1
ответ дан 6 December 2019 в 06:23
поделиться

Если вы выберете маршрут QueryPerformanceCounter, вам нужно следить за аппаратно-зависимой странностью . Прошло какое-то время, поэтому я не знаю, случаются ли до сих пор подобные вещи.

Вы также можете взглянуть на эту ссылку , поскольку там есть хороший пример приложения, которое сравнивает QueryPerformanceCounter, GetTickCount и TimeGetTime

5
ответ дан 6 December 2019 в 06:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: