My current RCPP program is only 4 times faster than its R byte code compiled equivalent. I am trying to speed up my code and from what I understand using pointers prevents an external function from copying the entire object when executing its methods. I am having difficulty finding salient examples that use points and NumericVectors. Please tell me how in this same code I could get the functions "get_sum" and "get_var" to point to the NumericVector object "v" rather than copy the whole thing.
library(inline) library(Rcpp) a=1:1000000 Rcpp.var = cxxfunction(signature(input="numeric"), plugin="Rcpp", body=" NumericVector v = input; int n = v.size(); double v_mean = get_sum(v,n)/n; double v_var = get_var(v,v_mean,n); return wrap(v_var); ",includes=" double get_var(NumericVector v,double m,int l) {double a = 0; for (int i = 0; i <l;i++) {a += (v[i]-m)*(v[i]-m);} return(a/l); } double get_sum(NumericVector v,int l) { double s = 0; for (int i = 0; i <l;i++) {s += v[i];} return(s); } ") b=system.time(for (i in 1:100)Rcpp.var (a)) c= system.time(for (i in 1:100)var (a)) Thank you Alon. P.S. I am aware that the "get_var" function provides the population variance and not the sample variance.
_______________________________________________ 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