Dear all, By "accident" I noticed that indexing with x(i) and x[i] gives remarkable difference in computing time. For example:
library(Rcpp) cppFunction(' IntegerVector insert1 (int n){ IntegerVector z(n); for (int i=0; i<n; ++i) z(i) = i; // NOTICE: using () return z; }') cppFunction(' IntegerVector insert2 (int n){ IntegerVector z(n); for (int i=0; i<n; ++i) z[i] = i; // NOTICE: using [] return z; }') Both functions "work": n <- 10; insert1(n); insert2(n) [1] 0 1 2 3 4 5 6 7 8 9 [1] 0 1 2 3 4 5 6 7 8 9 But notice this difference in computing time: n <- 50000 microbenchmark::microbenchmark( insert1(n), insert2(n) ) Unit: microseconds expr min lq mean median uq max neval cld insert1(n) 391.154 406.5500 416.9694 407.5005 421.1855 731.752 100 b insert2(n) 149.771 156.8045 189.9401 157.3745 163.0760 1204.635 100 a So using z(i) is more than twice as slow as using z[i]. This prompts me to ask: 1) Why is that? 2) In the vignettes it is always [i] that are used for vectors. But why is it that (i,j) is then used for matrices. Wouldn't it be preferable if one could use both [] and () for indexing in both cases (and with the same speed) - or are there deeper reasons for this? Best regards Søren _______________________________________________ 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