The clock
function is utterly useless. It measures cpu time, not real time/wall time, and moreover it has the following serious issues:
On most implementations, the resolution is extremely bad, for example, 1/100 of a second.
CLOCKS_PER_SECOND
is not the resolution, just the scale.With typical values of
CLOCKS_PER_SECOND
(Unix standards require it to be 1 million, for example),clock
will overflow in a matter of minutes on 32-bit systems. After overflow, it returns -1.Most historical implementations don't actually return -1 on overflow, as the C standard requires, but instead wrap. As
clock_t
is usually a signed type, attempting to perform arithmetic with the wrapped values will produce either meaningless results or undefined behavior.On Windows it does the completely wrong thing and measures elapsed real time, rather than cpu time.