QELAPSEDTIMER CREA effettivamente un timer?
Domanda
QTimer
sembra effettivamente creare un "timer" che consuma zecche e post della CPU eventi ecc. È lo stesso vero per QElapsedTimer
?
O è questo solo qualcosa come il GetTickCount
di Win32, dove si chiama un metodo su QElapsedTimer
, afferra il conteggio corrente del tick e sottrae dal conteggio in cui è stato avviato?
Voglio sapere se è una buona idea avere queste cose in giro, o mangeranno la batteria come QTimer
?
Soluzione
QTimer
"mangia" la batteria solo in alcuni casi.Nello specifico, se è un Qt::PreciseTimer
su Windows 7 e in precedenza - su tali sistemi, rampare la frequenza di spunta a 1000Hz.I timer molto brevi costringeranno lo stesso comportamento.Dato che tali sistemi sono non senza tacere, la presenza di un timer grossolano attivo non fa nulla per il consumo energetico, poiché il sistema si spunta a una velocità fissa se ne ha bisogno o meno.
In un sistema operativo senza tacere, QTimer
non ha effetti negativi.Ciò include OS X / XNU, Windows 8 o Linux senza testo.
QElapsedTimer
non è un QObject
e non fornisce eventi asincroni.Fornisce semplicemente un'interfaccia per le API del tempo della piattaforma ( non API del timer).