2015-07-30 2 views
3

Qt документации о QTime::currentTime() говорит:Получение миллисекунды точности текущее время в Qt

Обратите внимание, что точность зависит от точности базовой операционной системы; не все системы обеспечивают точность в 1 миллисекунду.

Но есть ли способ получить это время с точностью миллисекунд в окнах 7?

+0

Вы хотите что-то ищите? http://stackoverflow.com/questions/3729169/how-can-i-get-the-windows-system-time-with-millisecond-resolution – Donald

+0

@ Donald да что-то вроде этого, но я прочитал этот вопрос и ответил сейчас и мог Не понимаю решение актуально – Hamed

ответ

2

Разрешение для таймера может отличаться на разных платформах и показания могут отличаться от точности. Если вам необходимо получить высокое разрешение, точные временные метки на Windows 7, она обеспечивает QPC API:

https://msdn.microsoft.com/en-us/library/windows/desktop/dn553408%28v=vs.85%29.aspx

GetSystemTimePreciseAsFileTime утверждается, обеспечивает системное время с < разрешением 1us.

Но это только о точной отметке времени. Если вам нужно сделать что-то с задержкой в ​​1 мс (например, обработать событие), вам понадобится RTOS, а не дескриптор рабочего стола.

+0

на данный момент я думаю, что это лучшее решение, спасибо – Hamed

0

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

Но получение миллисекундных точных показаний вашего времени в значительной степени бесполезно, потому что у вас нет 100% времени процессора, а это значит, что ваши показания будут иметь гораздо большую дисперсию, чем только 1 миллисекунду, если ОС даст еще один процесс вычисления когда вы делаете свои действия.

+0

благодарю за ваш ответ, но это не синхронная операция, и мне нужно рассчитать точность в 1 миллисекунду между моими данными, и я не думаю, что точность времени в миллисекундах должна составлять 100% времени процессора. должен быть способ. – Hamed

+0

@ATN Просто помните, что задержка между приходом данных и уведомлением о его прибытии будет случайным и может быть порядка сотен миллисекунд в плохих случаях. Независимо от того, какие данные синхронизации вы получаете, необходимо обработать статистически, используя соответствующую модель ошибки. –

0

вы можете использовать функциональные возможности, предоставляемые файлом заголовка time.h в C/C++.

#include <time.h> 
clock_t start, end; 
double cpu_time_used; 
int main() 
{ 
    start = clock(); 
    /* Do the work. */ 
    end = clock(); 
    cpu_time_used = ((double)(end-start)/ CLOCKS_PER_SEC); 
} 
+0

Это не то, что я ищу, это что-то вроде 'QTime :: elapsed()', которые не решат мою проблему, мне нужно системное время в миллисекундах. но все равно спасибо. – Hamed

+0

ohh ... его ок. Я думал, что вы ищете это на C/C++. –

Смежные вопросы