Benchmarking matrix creation

October 23, 2012
By

(This article was first published on is.R(), and kindly contributed to R-bloggers)

Sometimes it is useful to take a vector, or one column/row of a matrix, and build a new matrix of identical copies of that vector. There are lots of different ways to do this, but I just discovered a new, and very straightforward way to do this with matrix algebra, using the outer() function.

However, I wanted to see whether this new approach was really as fast as I thought it would be, so I wrote up a couple of different functions, all of which take the same input and produce the same output, and used the rbenchmark package to compare their speed. rbenchmark is extremely simple to use, and if you have any function that you expect to be applying hundreds or thousands of times, it’s worth trying to find a fast method to do it.

As you can see from the plot above, the outer()-based function was consistently fast, even as I increased the number of replications. Also, I confirmed for myself the oft-repeated advice to pre-allocate a matrix or vector when building up entries in a loop, rather than building the matrix as the loop progresses. The latter approach (simpleLoop) involves making a new copy of the matrix every iteration, which is indeed very slow.

To leave a comment for the author, please follow the link and comment on his blog: is.R().

R-bloggers.com offers daily e-mail updates about R news and tutorials on topics such as: visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...



If you got this far, why not subscribe for updates from the site? Choose your flavor: e-mail, twitter, RSS, or facebook...

Tags: , ,

Comments are closed.