2

我正在编写一个相对复杂的函数来进行从头到尾的数据分析。该函数调用了我编写的许多子函数(它们本身称为子子函数等)。我正在寻找一种工具来告诉我我的功能在每个子功能和子子功能上花费了多少时间,以便了解我应该在哪里寻找性能改进。类似于 MATLAB 的分析器的东西会很好。

例如,一个假设函数audit

#fun1 is called by fun2
fun1 <- function() {
  rnorm(100000)
}

fun2 <- function(x) {
  y <- x+1
  z <- y*fun1()
}

mainFun <- function() {
  z+3
}

audit(mainFun())
> mainFun = 1 s; of which 95% is in fun1 and 98% is fun2

显然,我可以为每个单独的功能使用microbenchmark()or system.time()- 但是随着mainFun变得更加复杂,有效地使用它变得很棘手。有现成的工具吗?

4

1 回答 1

5

谷歌搜索R profiler将引导您找到Rprof您正在寻找的功能。本质上,您Rprof()可以正常调用和运行脚本。该summaryRprof函数是总结分析器结果的一种方便的方法。有关更多详细信息,请查看编写 R 扩展中有关整理和分析 R 代码?Rprof章节,或此链接此 SO 问题,甚至这组 SO 问题

于 2012-11-15T18:40:34.527 回答