我正在编写一个相对复杂的函数来进行从头到尾的数据分析。该函数调用了我编写的许多子函数(它们本身称为子子函数等)。我正在寻找一种工具来告诉我我的功能在每个子功能和子子功能上花费了多少时间,以便了解我应该在哪里寻找性能改进。类似于 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
变得更加复杂,有效地使用它变得很棘手。有现成的工具吗?