[Rcpp-devel] R vectorisation vs. C++ vectorisation
darren at dcook.org
Tue Nov 20 00:38:01 CET 2012
> The example is not particularly well chosen, but I think the problem
> of vectorisation is a real one. To vectorise code in R you need to
> have a big R vocabulary; to vectorise code in Rcpp, you need to be
> able to write a loop. So even if it's a not a completely fair
> comparison to R, it's still reasonable because it's much easy to
> vectorise in C++.
In my case, informed by interesting benchmarks such as yours, I now tend
to write my R functions with optimizing to C++ in mind. In other words,
I've stopped being ashamed of having loops in my R code.
If my R script completes Quick Enough I don't care. But when it takes
Too Long, I know I can improve it by one order of magnitude by writing
better R code, or by two orders of magnitude by porting just the
bottleneck to C++, using Rcpp and inline. For me, at least, those two
choices are about equal effort.
P.S. I don't think the sugar versions can be made any quicker, because
they have to allocate intermediate vectors, and do more memory copies.
>> | exploration of vectorisation in R vs C++ at
>> | https://gist.github.com/4111256
>> | ...
>> | expr min lq median uq max neval
>> | vacc1(age, female, ily) 6816.8 7139.4 7285.7 7823.9 10055.5 100
>> | vacc2(age, female, ily) 194.5 202.6 212.6 227.9 260.4 100
>> | vacc3(age, female, ily) 21.8 22.4 23.4 24.9 35.5 100
>> | vacc4(age, female, ily) 36.2 38.7 41.3 44.5 55.6 100
>> | vacc5(age, female, ily) 29.3 31.3 34.0 36.4 52.1 100
More information about the Rcpp-devel