如何跟踪使用Rcpp的R函数的内存使用情况?

时间:2019-03-31 22:31:06

标签: r profiling rcpp

因此,我有一个程序可以使用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”。

对不起,这是否令人困惑,请询问您是否需要我进行澄清,谢谢!

0 个答案:

没有答案