1

我想记录我的 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 计算相同的结果?

4

0 回答 0