system.time {base}R Documentation

CPU Time Used


Return CPU (and other) times that expr used.


system.time(expr, gcFirst)
unix.time(expr, gcFirst)


expr Valid R expression to be “timed”
gcFirst Logical - should a garbage collection be performed immediately before the timing? Default is FALSE.


system.time calls the builtin proc.time, evaluates expr, and then calls proc.time once more, returning the difference between the two proc.time calls.

The values returned by the proc.time are (on Unix) those returned by the C library function times(3v), if available.

unix.time is an alias of system.time, for compatibility reasons.

Timings of evaluations of the same expression can vary considerably depending on whether the evaluation triggers a garbage collection. When gcFirst is TRUE a garbage collection (gc) will be performed immediately before the evaluation of expr. This will usually produce more consistent timings.


A numeric vector of length 5 containing the user cpu, system cpu, elapsed, subproc1, subproc2 times. The subproc times are the user and system cpu time used by child processes (and so are usually zero). On Windows the subproc times are not available and so are always NA. The first two components are not available on Windows 9x, and so are reported as NA; they do return real values on Windows NT4/2000/XP.
The resolution of the times will be system-specific; it is common for them to be recorded to of the order of 1/100 second, and elapsed time is rounded to the nearest 1/100.

See Also

proc.time, time which is for time series.


system.time(for(i in 1:100) mad(runif(1000)))
## Not run: 
exT <- function(n = 1000) {
  # Purpose: Test if system.time works ok;   n: loop size
  system.time(for(i in 1:n) x <- mean(rt(1000, df=4)))
#-- Try to interrupt one of the following (using Ctrl-C / Escape):
exT()                 #- about 3 secs on a 1GHz PIII
system.time(exT())    #~ +/- same
## End(Not run)

[Package base version 2.1.0 Index]