Преобразование и сравнение микросекунд и миллисекунд - PullRequest
1 голос
/ 16 февраля 2010

Как я могу преобразовать микросекунды в миллисекунды и сделать возможным сравнение временных меток по вычитанию? Пример:

int t1 = (int)timeGetTime();    
int t2 = (int)timeGetTime()+40;
// now t1 - t2 < 0 which means that t1 < t2.

Эта логика не будет работать, если вы разделите значения времени на 1000, чтобы преобразовать микросекунды в миллисекунды.

Редактировать

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

Ответы [ 3 ]

1 голос
/ 16 февраля 2010

Разрешение таймеров часов в Windows ограничено до 10 миллисекунд, поэтому вы никогда не сможете получить значения времени с точностью до микросекунд.

Если ваши значения времени поступают из другого места, способного к этому разрешению, то примите значения в виде микросекунд. Умножение на 1000 или деление целого на 1000 не даст вам лучшего разрешения, оно просто изменит масштаб вашего сравнения.

1 голос
/ 16 февраля 2010

Почему бы не умножить значения миллисекунд на 1000, чтобы вы сравнивали их в микросекундах? В качестве альтернативы используйте вместо этого числа с плавающей запятой.

0 голосов
/ 16 февраля 2010

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

Вы можете использовать Windows API, чтобы проверить, насколько гранулярным вы можете сделать это.

QueryPerformanceFrequency (& ticksPerSecond); QueryPerformanceCounter (& клещ);

Эти две функции помогут вам в этом. Взгляните на статьи MSDN , чтобы узнать больше. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...