调用其他函数的函数的性能分析

Dre*_*een 2 performance profiling r

我正在编写一个相对复杂的函数来进行从头到尾的数据分析.这个函数调用了我编写的许多子函数(它们本身称为子子函数等).我正在寻找一种工具来告诉我我的功能在每个子功能和子功能上花了多少时间,以便了解我应该在哪里寻找性能改进.与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
Run Code Online (Sandbox Code Playgroud)

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

Pau*_*tra 5

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