Measuring R Program Performance
To make your programs faster, you have to measure what they are doing. You have to determine what parts of your program are taking the most time to determine where to focus your optimization efforts. Additionally, you have to measure resource consumption (particularly memory usage) and determine how this affects performance.
Timing
The easiest way to measure your programs is to use the
system.time
function:
system.time(expr, gcFirst = TRUE)
This function will execute the expression expr
, optionally running the garbage collector
first (if gcFirst=TRUE
). It won’t
give you a detailed report on where a program is spending its time, but
it won’t slow down the performance of the code you are measuring either.
Here’s an example:
> do.stuff <- function() { + a <- 1 : 10000 + for (i in 1 : 10000) + a[i] <- a[i]^2 + a + } > system.time(do.stuff()) user system elapsed 0.081 0.001 0.106
This shows the user time, system time, and total elapsed time required to run your program. The user time shows the time taken by R itself, the system time shows the time used by your operating system (for example, to read files or to communicate with network resources), and the elapsed time shows the total elapsed time. This helps you distinguish between time that your computer is doing other things (like getting email), and time that it is doing work in R.
Profiling
To measure where your R programs are spending their time
(this is called profiling), you can use the
Rprof
function to ...
Get R in a Nutshell, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.