我想记录我的 for 循环函数的计算时间。我通过rcpp编写函数,并使用std::clock来测量时间间隔。rcpp代码如下:
// [[Rcpp::depends(RcppArmadillo)]]
#include <RcppArmadilloExtensions/sample.h>
using namespace Rcpp;
/* tst.cpp */
// [[Rcpp::export]]
List f_time(int N,int L,double ep,arma::rowvec yy){
List out(4);double js=0;
int sbv=4;
int n=yy.n_elem;
int d=std::pow(n,0.5);
double t0= clock();
double t=t0;
arma::mat clp(n,n);clp.randn();
arma::rowvec past=arma::randn(n).t()*clp;
arma::rowvec rd(n),rw(n);
for(int i=1;i<N;i++){
arma::mat zm(L,n),zv(L,n);
zm.zeros();
zv=zv.randn()*clp;
zm.row(0)=past;
}
t = clock()-t0;
t=((float)t)/CLOCKS_PER_SEC;
out(3)=t;
return(out);
}
我如下调整 R 代码
Rcpp::sourceCpp('tst.cpp')
t1<-Sys.time()
res=f_time(1e3,10,0.1,rnorm(625))
t2<-Sys.time()
t2-t1
print(res[[4]])
输出是
但是 R(t2-t1) 中的时间间隔与 rcpp(res[[4]]) 中计算的时间间隔不同,如何在我的 cpp 函数中得到与 R 的 Sys.time 计算相同的结果?