To get the elapsed CPU time used by a process, you can use the
clock
function. This facility is declared in the header file
`time.h'.
In typical usage, you call the clock
function at the beginning and
end of the interval you want to time, subtract the values, and then divide
by CLOCKS_PER_SEC
(the number of clock ticks per second), like this:
#include <time.h> clock_t start, end; double elapsed; start = clock(); ... /* Do the work. */ end = clock(); elapsed = ((double) (end - start)) / CLOCKS_PER_SEC;
Different computers and operating systems vary wildly in how they keep track of processor time. It's common for the internal processor clock to have a resolution somewhere between hundredth and millionth of a second.
In the GNU system, clock_t
is equivalent to long int
and
CLOCKS_PER_SEC
is an integer value. But in other systems, both
clock_t
and the type of the macro CLOCKS_PER_SEC
can be
either integer or floating-point types. Casting processor time values
to double
, as in the example above, makes sure that operations
such as arithmetic and printing work properly and consistently no matter
what the underlying representation is.
Note that the clock can wrap around. On a 32bit system with
CLOCKS_PER_SEC
set to one million a wrap around happens after
around 36 minutes.
clock
function. POSIX requires that this value is one
million independent of the actual resolution.
CLOCKS_PER_SEC
.
clock
function.
Values of type clock_t
are in units of clock ticks.
clock
returns the
value (clock_t)(-1)
.
Go to the first, previous, next, last section, table of contents.