因此,我有一个程序可以使用Rcpp从C ++导入函数,并且我想测量其内存使用情况,尤其是其峰值内存使用情况。我尝试了Rprof,但似乎分辨率不够好,例如我的许多输出在summaryRprof()产生的输出中显示0为mem.total。我还尝试了Hadley Wickham的lineprof,其结果似乎与我从Rprof获得的结果相矛盾。
带有rprof的代码:
Rprof(NULL)
Rprof(tf <- "rprof.log", memory.profiling=TRUE, interval = .0000025)
xz <- my.function(arg1, arg2)
Rprof(NULL)
out <- summaryRprof(tf, memory = c("both"))
Rprof的输出:
$by.self
[1] self.time self.pct total.time total.pct mem.total
<0 rows> (or 0-length row.names)
$by.total
total.time total.pct mem.total self.time self.pct
".Call" 0 100 0 0 100
"C++ function" 0 100 0 0 0
"R function" 0 100 0 0 0
$sample.interval
[1] 2e-06
$sampling.time
[1] 0.000332
在较大的时间间隔内,out $ by.self会返回,但对于总内存仍然显示为零。
带有lineprof的代码:
source("my_function.r")
prof <- lineprof(my.function(arg1, arg2))
shine(prof)
不确定如何/是否可以将图像上传到stackoverflow,但是基本上我得到的是闪亮的应用程序界面,但只有一行“ .Call”。
对不起,这是否令人困惑,请询问您是否需要我进行澄清,谢谢!