Skip to main content

R benchmarking using proc.time() and rbenchmark package


I am the proud owner of Dirk's book on Seamless R and C++ Integration. Decided to dig right in and get into details on how to benchmark code from the first chapter on.

Suppose you want to benchmark the following piece of R fibonacci code

(1)
fibR <- function(n)
{
     if(n == 0) return(0)
     if(n == 1) return(1)
     return (fibR(n - 1) + fibR(n - 2))
}

You can use the good ol' proc.time() function like this
(2)
a <- proc.time()
fibR(30)
proc.time() - a

Whose output will look something like this
(3)
user system elapsed
8.27 0.00 8.30


What this means is that the program took 8.27 user seconds to run the code and used 0 system seconds on resources in that time.  Ideally you need to add the user and system times to get the full picture of how long your code took to run.
The elapsed time denotes the time it took for the day to go by between the first line of code in (2) to the 3rd line of code in (2). It means that it took 8.30 seconds from start to finish of the program in terms of time of day. It would show the total time it took for me to execute line 1 of (2) then go for a coffee, then execute line 2 of (2) and then take a piss and finally execute line 3 of (2). The total time for doing all this should reflect under elapsed. This metric baffles me though, because when I executed the code in (2) I ran it with a Ctrl-R shortcut over all 3 lines of the code. Doing this definitely could not have taken 8.3 seconds as I did not go for a coffee or take a piss in between. Seriously. Anyway...

There is another package called "rbenchmark" quoted in the book. Neat simple to use.
(4)
benchmark(replications = 1, fibR(30), columns = c('test','elapsed'))
replications stands for the number of times you want to repeat the function you want to benchmark. columns represent the columns you want to see in the output dataframe. Output looks like
(5)
     test elapsed
1 fibR(30)    8.23

Comments

Popular posts from this blog

Basic Econometrics - Chapter 1 - Exercise 1

Exercise 1.1 Table 1.2 gives data on the Consumer Price Index (CPI) for seven industrialized countries with 1982-1984 = 100 as base of the index. a. From the given data, compute the inflation rate of each country. b. Plot the inflation rate for each country against time (i.e. use the horizantal axis for time and the vertical axis for the inflation rate) c. What broad conclusions can you draw abou the inflation experience in the seven countries? d. Which countries inflation seems to be most variable? Can you offer any explanation? ## Note here I have to skip several rows and add column names. Have a look at ## the raw data. Column names are c('Year', 'Canada', 'France', 'Germany', ## 'Italy','Japan', 'UK', 'US') cpi <- read.table("https://raw.githubusercontent.com/cablegui/Econometrics/master/OriginalData/Table%201.2.txt", skip = 6, col.names = c("Ye...

Step by step guide to installing and using miktex with RStudio (Windows)

Using miktex with Rstudio is very easy with the miktex portable app available from http://miktex.org/portable. Steps 1. Follow the instructions from http://miktex.org/portable to download and unzip the miktex portable application in a loccation of your choice. 2. In R write the following code in a script and save it. Note that the E:\\Software-Silo\\Miktex\\miktex\\bin location is the location where I unzipped the miktex portable application. # Install miktex y <- Sys.getenv("PATH") x <- paste0(y,";","E:\\Software-Silo\\Miktex\\miktex\\bin") Sys.setenv(PATH=x) 3. Run Miktex by double clicking the following application "miktex-portable.cmd" in the Miktex main directory. 4. Run step 2 in RStudio to install the path into R environment. 5. Open a new RNW in RStudio to test whether Miktex works . 6. Run Compile PDF in RStudio. It should be just at the top of the RNW file created in step 5. 7. You will now see a PDF file whic...

Installing and using ROracle in R

Hi, Hope this post keeps you in the best of health. I am an oracle user and wanted to know how to fetch database information in R. There is a package out there called ROracle but there are no binaries for it and it thus needs to be built and then installed. Here are the steps to install it on Windows 7 machines. 1. Download the package from http://cran.r-project.org/web/packages/ROracle/index.html. Since I wrote this post the latest that was available was  ROracle_1.1-12.tar.gz . 2. Place the package in the directory where R is installed. I placed mine in E:\R\R-3.0.2\bin folder. 3. Install RTools from http://cran.r-project.org/bin/windows/Rtools/. Since my R version is R-3.0.2 the toolkit I needed was RTools31.exe. 4. Install the Rtools software in the R home directory. I placed mine in E:\R\Rtools. Place all the extras in there too. For example I placed my 32 bit extras in E:\R\RExtras32 and the 64 bit in E:\R\RExtras64 folder. These extras are not necessary for ...