On some systems the timebase runs at a rather low frequency, say 20MHz. This test will spuriously fail there. Waste a million CPU cycles before
reading TB the second time?

Waste said million cycles portably by calling sched_yield()?
(Available only on POSIX systems. :)

I was thinking more along the lines of

        int j;
        for (j = 0; j < 1000000; j++)
                asm("" : : "r"(j));

which is more portable (and a lot more predictable).


Segher

Reply via email to