Получение миллисекунд с точностью текущего времени в Qt

Qt документация о QTime::currentTime() говорит:

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

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

5

Решение

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

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

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

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

2

Другие решения

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

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

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

Ты можешь использовать QDateTime Класс и преобразовать текущее время в соответствующий формат:

QDateTime::currentDateTime().toString("yyyy/MM/dd hh:mm:ss,zzz")

где ‘Z‘соответствует точности в миллисекундах.

0
По вопросам рекламы [email protected]