> 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. Darren 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 _______________________________________________ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel