Same do the animation widgets.
Another funny thing. You can make yourself a timer based on the animation widget.
Maybe not efficient but maybe more fun.
lua Code:
--create animation timer
local b = CreateFrame("Frame")
local t = b:CreateTexture()
--anim
--http://wowprogramming.com/docs/widgets/Animation
local ag = t:CreateAnimationGroup()
local anim = ag:CreateAnimation("Rotation")
anim:SetDegrees(0)
anim:SetDuration(60)--in seconds
ag:Play()
ag:SetScript("OnFinished", function(self, event, ...)
print('done')
end)
Afaik Tuller tried that in some of his cooldown mods aswell. Internally the animation widget is using onUpdate aswell (I guess). You even have the option to repeat the animation forever.
The thing is the CPU usage may fade but it is just transfered to Blizzard code by using the animation API.