小编mas*_*oon的帖子

RcppArmadillo:内存使用问题

我已经开始使用Rcpp了.我很喜欢.我对编程很新.我有一个关于内存使用的问题.以下是一个可重现的问题:

library(RcppArmadillo)
library(inline)
code <- "
  Rcpp::NumericVector input_(input);
  arma::cube disturb(input_.begin(), 2, 2, 50000000, false);
  return wrap(2);
"
Test <- cxxfunction(signature(input = "numeric"), plugin = "RcppArmadillo", body = code)
input <- array(rnorm(2 * 2 * 50000000), dim = c(2, 2, 50000000))
Test(input)
Run Code Online (Sandbox Code Playgroud)

我的理解是,在上面的问题中,唯一的内存使用是当我将数组分配给R中的变量输入时.所以我应该只使用大约1.6 gb(2*2*50*8 = 1600).当我去Rcpp时,我使用SEXP对象初始化变量input_,这是一个指针.所以这不应该使用任何额外的内存.然后当我初始化变量扰乱时,我也使用指针并设置copy_aux = FALSE.所以我不应该使用任何记忆.因此,如果我的理解是正确的,那么在运行代码时我应该只使用1.6 GB.它是否正确?

但是,当我运行代码时,内存使用情况(通过查看Ubuntu中的系统监视器判断)跳到10 gb以上(从大约1 gb),然后再下降到4 gb左右.我不明白发生了什么.我是否错误地使用了Rcpp?

非常感谢您的帮助.非常感谢.

c++ memory r rcpp

5
推荐指数
1
解决办法
816
查看次数

标签 统计

c++ ×1

memory ×1

r ×1

rcpp ×1