Dear All,<br>I have tried out the first example by using RcppArmadillo, but I am not sure whether the code is efficient or not. And I did the comparison of the computation time.<br><br>1) R code using for loop in R: 87.22s<br>
2) R code using apply: 77.86s<br>3) RcppArmadillo by using for loop in C++: 53.102s<br>4) RcppArmadillo together with apply in R: 47.310s<br><br>It is kind of not so big increase. I am wondering whether I used an inefficient way for the C++ coding:<br>
<br><br>// [[Rcpp::depends(RcppArmadillo)]]<br><br>#include <RcppArmadillo.h><br><br>using namespace Rcpp;<br><br>// [[Rcpp::export]]<br>List betahat(Function ker, double t0, NumericMatrix Xr, NumericMatrix yr, NumericVector tr, double h, int m) {<br>
  int n = Xr.nrow(), p = Xr.ncol();<br>  arma::mat X(Xr.begin(), n, p, false);<br>  arma::mat y(yr.begin(), n, 1, false);<br>  arma::colvec t(tr.begin(), tr.size(), false);<br>  arma::mat T = X;<br>  T.each_col() %= (t-t0)/h;<br>
  arma::mat D = arma::join_rows(X,T);<br>  arma::vec kk =as<arma::vec>(ker(tr-t0,h));<br>  arma::mat W = (arma::diagmat(kk))/m;<br>  arma::mat Inv = arma::trans(D)*W*D;<br>  arma::vec betahat = arma::inv(Inv)*arma::trans(D)*W*y;<br>
  arma::colvec betahat0(betahat.begin(),betahat.size()/2,false);<br>  return List::create(Named("betahat") = betahat0);<br>}<br><br><span style="font-weight:600;color:#0000cc"></span>Anyone could help me with how to increase the efficiency of the coding? Thanks.<br>
<br><br><br clear="all"><div>Best wishes!</div><div> </div><div>Honglang Wang</div><div> </div><div>Office C402 Wells Hall</div><div>Department of Statistics and Probability</div><div>Michigan State University</div><div>1579 I Spartan Village, East Lansing, MI 48823</div>
<div><a href="mailto:wangho16@msu.edu" target="_blank">wangho16@msu.edu</a></div><br>