Does QElapsedTimer actually create a timer?
Question
QTimer
seems to actually create a "timer" that consumes CPU ticks and posts events etc. Is the same true for QElapsedTimer
?
Or is this just something like win32's GetTickCount
where by when you call a method on QElapsedTimer
it grabs the current tick count and subtracts from the count where it was started?
I want to know if its a good idea to have these things hanging around, or will they eat battery like QTimer
?
Solution
QTimer
will "eat" battery only in some cases. Specifically, if it is a Qt::PreciseTimer
on Windows 7 and earlier - on those systems, it will ramp up the tick frequency to 1000Hz. Very short timers will force the same behavior. Since those systems are not tickless, the presence of an active coarse timer does nothing to power consumption, since the system ticks at a fixed rate whether it needs to or not.
On a tickless operating system, QTimer
does not have such ill effects. This includes OS X/xnu, Windows 8 or tickless Linux.
QElapsedTimer
is not a QObject
and does not provide any asynchronous events. It simply provides an interface to the platform's time APIs (not timer APIs).