[R] An "R is slow"-article

Barry Rowlingson b.rowlingson at lancaster.ac.uk
Wed Jan 9 16:56:28 CET 2008

Gustaf Rydevik wrote:
> Hi all,
> Reading the wikipedia page on R, I stumbled across the following:
> http://fluff.info/blog/arch/00000172.htm
> It does seem interesting that the C execution is that much slower from
> R than from a native C program. Could any of the more technically
> knowledgeable people explain why this is so?

  I don't think it is. He's comparing some C code with calling 
fisher.test() from R, which he claims does 'nothing but call C code over 
and over'. Wrong. It checks its arguments in R, it checks for multiple 
arguments, it does all sorts of goodness before finally calling 
.C("fexact"). And then it does even more things. Confidence intervals, 
odds ratios, p-values and so on.

  He needs to re-run his tests but instead of calling fisher.test() he 
should prepare the data and call .C("fexact",...) directly.

> The author also have some thought-provoking opinions on R being
> no-good and that you should write everything in C instead (mainly
> because R is slow and too good at graphics, encouraging data
> snooping). See  http://fluff.info/blog/arch/00000041.htm

  And of course C is good at buffer overflows and memory leaks and 
spending ages compiling when you really just want to do fisher.test(foo) 
and have done with it.

  He says: "I used to have a simulation written in R calling compiled C 
that took overnight to process 100 agents, but now that it's all in C 
simulations with 9,000 agents run in forty minutes. Don't risk it--learn 
to do statistical computing in C today!". Fine, but I imagine his R code 
was created much quicker than the C code. R is quicker to write, and 
once you have established that your code is running too slow for you, 
then you optimise. By that point you've hopefully debugged your 
algorithm and spotted all the nasty traps that would have tied you up in 
the C debugger for a week. You then rewrite in pure C for speed, and you 
of course have a set of test cases generated from R to verify your C is 
doing the same as your R. Win win.

  He claims to be an economist but clearly doesn't recognise the economy 
of rapid development...


More information about the R-help mailing list