我想将一个大矩阵传递给一个 RcppArmadillo 函数(大约 30,000*30,000),并且感觉这种传递本身就消耗了所有的性能提升。这里也提出了这个问题,并提出了使用带参数的高级构造函数的解决方案copy_aux_mem = false
。这似乎也是一个很好的解决方案,因为我只需要从矩阵中读取行而不更改任何内容。我在正确实施解决方案时遇到问题。这可能只是一个简单的语法问题。
这是我当前的函数调用设置(当然是简化的):
#include <RcppArmadillo.h>
// [[Rcpp::depends(RcppArmadillo)]]
// [[Rcpp::export]]
arma::vec test(arma::mat M) {
return(M.row(0))
}
这对于大型矩阵 M 来说非常慢(例如M=matrix(rnorm(30000*30000), nrow=30000, ncol=30000)
。所以我想使用这里记录的高级构造函数。语法是mat(aux_mem*, n_rows, n_cols, copy_aux_mem = true, strict = true)
并且copy_aux_mem
应该设置为false
“按引用传递”。我只是不确定中的语法函数定义。我如何在中使用它arma::vec test(arma::mat M) {
?