February 19, 2011
By

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

I have bad news for those of you trying to produce lucid code!

In his blog Radford M. Neal, Professor at the University of Toronto, published an article with the headline Two Surprising Things about R.
He worked out, that parentheses in mathematical expression slow down the run-time dramatically! In contrast it seems to be less time consuming to use curly brackets. I verified these circumstances to be true:

 12345678910111213141516171819 > x=10 > f <- function (n) for (i in 1:n) 1/(1*(1+x)) > g <- function (n) for (i in 1:n) (((1/(((1*(((1+x))))))))) > system.time(f(10^6))    user  system elapsed   2.231   0.000   2.232 > system.time(g(10^6))    user  system elapsed   3.896   0.000   3.923 > > # in contrast with curly brackets > h <- function (n) for (i in 1:n) 1/{1*{1+x}} > i <- function (n) for (i in 1:n) {{{1/{{{1*{{{1+x}}}}}}}}} > system.time(h(10^6))    user  system elapsed   1.974   0.000   1.974 > system.time(i(10^6))    user  system elapsed   3.204   0.000   3.228

As you can see adding extra parentheses is not really intelligent concerning run-time, and not in a negligible way. This fact shocked me, because I always tried to group expressions to increase the readability of my code! Using curly brackets speeds up the execution in comparison to parentheses. Both observations are also surprising to me!
So the conclusion is: Try to avoid redundant parentheses and/or brackets!

In a further article he presents some patches to speed up R.

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

Tags: , , , , ,