Cover by Joseph Adler

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

O'Reilly logo

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 ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required