之前买的张丹的R极客理想的这本书想起来有R性能监控这部分的内容,学习了下。
1、Rprof
首先是R自带的Rprof包,不需要安装,直接导入即可
tmp = "tRprof.out"
Rprof(tmp, line.profiling= TRUE, memory.profiling=TRUE)
<R代码>
Rprof(NULL)
# 最后会生成一个tRprof.out文件,可以在R里面导入读取
summaryRprof("tRprof.out")
![](https://img.haomeiwen.com/i4111755/52a19fdd105bdbda.png)
- by.self: 这部分显示了每个函数自身执行所消耗的时间,不包括它调用的其他函数的时间。
- by.total: 这部分显示了包括调用其他函数在内的每个函数的总时间消耗。
- self.time: 函数自身执行的平均时间。
- total.time: 函数包括调用其他函数在内的平均总时间。
- percent.self: 每个函数自身时间消耗占总时间的百分比。
- percent.of.total: 每个函数总时间消耗占总时间的百分比。
2、profvis(旧的是lineprof)
安装:
conda install -c conda-forge pandoc # 如果没有的话需要安装
R
install.packages("profvis")
使用:
library(profvis)
profvis({
# 你的代码块
})
这个更容易看资源消耗的情况,结果可以输出来一个html,示例:
library(profvis)
p<- profvis({
my_cumsum2<- function(x){
y<- numeric(length(x))
y[[1]]<- x[[1]]
for(i in 2:length(x)){
y[[i]]<- y[[i-1]]+ x[[i]]
}
y
}
x<- rnorm(1000)
for(i in 1:1000){
my_cumsum2(x)
}
})
htmlwidgets::saveWidget(p, "profile.html")
![](https://img.haomeiwen.com/i4111755/8e372eeebd9ca0c3.png)
- 时间(Time):profvis中的时间单位通常是毫秒(ms)。这意味着,如果你看到某个函数或代码块的时间是100,那么它表示该函数或代码块执行了100毫秒。
- 内存(Memory):profvis中的内存单位通常是字节(bytes)。R语言中内存的使用量通常以字节为单位来表示,这可以帮助你了解代码在执行过程中的内存消耗情况。
网友评论