Действительно ли QElapsedTimer создает таймер?

StackOverflow https://stackoverflow.com//questions/22024968

  •  21-12-2019
  •  | 
  •  

Вопрос

QTimer похоже, на самом деле создает «таймер», который потребляет такты ЦП и публикует события и т. д.Верно ли то же самое для QElapsedTimer?

Или это что-то вроде Win32? GetTickCount где, когда вы вызываете метод QElapsedTimer он захватывает текущий счетчик тиков и вычитает его из счетчика, с которого он был запущен?

Я хочу знать, хорошая ли идея держать эти вещи под рукой, или они будут жрать батарею, как QTimer?

Это было полезно?

Решение

QTimer «ест» батарею только в некоторых случаях.В частности, если это Qt::PreciseTimer в Windows 7 и более ранних версиях — в этих системах тактовая частота увеличится до 1000 Гц.Очень короткие таймеры будут вызывать такое же поведение.Поскольку эти системы нет без такта, наличие активного грубого таймера никак не влияет на энергопотребление, поскольку система тикает с фиксированной скоростью, независимо от того, нужно это или нет.

В безтиковой операционной системе QTimer не имеет таких неприятных последствий.Сюда входят OS X/xnu, Windows 8 или бестактный Linux.

QElapsedTimer это не QObject и не предоставляет никаких асинхронных событий.Он просто предоставляет интерфейс для API-интерфейсов времени платформы (нет API таймера).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top