[Rcpp-devel] First foray into Rcpp and comparison of speed with R

Gregor GORJANC gregor.gorjanc at bf.uni-lj.si
Thu Sep 1 17:59:26 CEST 2011


Hi,

On 1 September 2011 17:35, Dirk Eddelbuettel <edd at debian.org> wrote:

> ... I kind of hoped for more, but given that I vectorized much of R
> | code and that computations are simple additions and multiplications I
> wonder if
> | I could get much more gains with Rcpp foray.
>
> Hard to say in general terms.  Rcpp sugar can help, Romain has hidden some
> loop unrolling inside it and that helps in the benchmark example in the
> Rcpp-introduction vignette (and JSS article) but it doesn't imply all sugar
> code will be faster.
>

OK. But can we say that C++ for() loop via Rcpp can be speed up further with
Rcpp suger? Say simple sum of a vector or something simple like that. I do
not know, but I would think not. I am correct? I do agree that it would ease
the development and interpretability of code.

...
>  |   // --- Compute ---
> |
> |   for(i = 1; i < nI+1; i++) {
>
> Careful about i=1:  C/C++ indices run from 0 to n-1.
>

Thx for this, but it was deliberate as I rely on having zero in the "first"
row.


> |     for(t = 0; t < nT; t++) {
> |       pa(i, t) = c1 * ped(ped(i, 1), t+3) +
> |                  c2 * ped(ped(i, 2), t+3);
> |
> |       w(i, t) = ped(i, t+3) - pa(i, t);
>
> The recursive nature may make it tricky to vectorise this.
>

I thought so, but wanted to ask the experts.

...
> |   // --- Return ---
> |
> |   Rcpp::List ret;
> |   ret["pa"] = pa;
> |   ret["w"]  = w;
> |   ret["xa"] = xa;
> |   return(ret);
>
> We usually do
>
>  Rcpp::List ret = Rcpp::List::create(Rcpp::Named("pa", pa),
>                                      Rcpp::Named("w", w);
>                                      Rcpp::Named("xa", xa));
>  return ret;
>
> to avoid re-allocation.  But that is minuscule, and your code is arguably
> as easy or easier to read :)
>

Did I understand correctly that your proposal is to create return object all
in one spot to avoid changing it as I did three times?

Thx for replies and so neat way to use so powerfull tools in R!!!

gg
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20110901/b62ccc67/attachment.htm>


More information about the Rcpp-devel mailing list