美文网首页编程学习
R代码性能监控

R代码性能监控

作者: myshu | 来源:发表于2024-08-25 10:49 被阅读0次

之前买的张丹的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")
结果数据结构
  1. by.self: 这部分显示了每个函数自身执行所消耗的时间,不包括它调用的其他函数的时间。
  2. by.total: 这部分显示了包括调用其他函数在内的每个函数的总时间消耗。
  3. self.time: 函数自身执行的平均时间。
  4. total.time: 函数包括调用其他函数在内的平均总时间。
  5. percent.self: 每个函数自身时间消耗占总时间的百分比。
  6. 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")
  1. 时间(Time):profvis中的时间单位通常是毫秒(ms)。这意味着,如果你看到某个函数或代码块的时间是100,那么它表示该函数或代码块执行了100毫秒。
  2. 内存(Memory):profvis中的内存单位通常是字节(bytes)。R语言中内存的使用量通常以字节为单位来表示,这可以帮助你了解代码在执行过程中的内存消耗情况。

相关文章

网友评论

    本文标题:R代码性能监控

    本文链接:https://www.haomeiwen.com/subject/rvwnkjtx.html