Linux timer accuracy graphs and comparison,

I have compared the accuracy given by SDL_Delay() on Linux 2.4.7, and
plotted actual vs requested delay for a few different cases.

The results can be found at

The best way to get accurate timers on current Linux systems
seems to be with a function like

void busy_delay(unsigned long dt)
unsigned long target = SDL_GetTicks() + dt;
if (dt > 10)
SDL_Delay((dt/10)*10 - 1);
while (SDL_GetTicks() < target) {}

But I don’t know if there are better ways to busy-wait.
It is also a bit ugly since it assumes a timer resolution of 10 ms,
and wastes CPU time if the resolution is actually greater.

I don’t know how these figures compare to other operating systems and


Ulf Ekstr?m, currently at CNR in Pisa, Italy