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) {