我正在编写一个相对复杂的函数来进行从头到尾的数据分析。这个函数调用了我编写的许多子函数(它们本身称为子子函数等)。我正在寻找一种工具来告诉我我的功能花在每个子功能上的时间和时间。子子功能,以便看看我应该在哪里寻找性能改进。与MATLAB的profiler类似的东西会很好。
例如,假设函数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()
或system.time()
- 但有效使用它会变得棘手,因为mainFun
变得更加复杂。是否有现成的工具?
答案 0 :(得分:5)
通过Google搜索R profiler
会引导您进入Rprof
功能,这就是您要寻找的功能。实质上,您调用Rprof()
并正常运行脚本。 summaryRprof
函数是概括分析器结果的便捷方式。有关详细信息,请查看?Rprof
和Tidying and profiling R code中的Writing R Extensions,或this link,this SO question,甚至this set of SO questions。< / p>