[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...
Barry
More information about the R-help
mailing list