2
我正在編寫一個相對複雜的函數來執行從頭到尾的數據分析。這個函數調用我寫過的很多子函數(它們本身稱爲子子函數等)。我正在尋找一種工具來告訴我我的函數在每個子函數上花費了多少時間,以便查看我應該在哪裏查找性能改進。類似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
變得更加複雜,實際上變成棘手。有沒有現成的工具呢?
這裏也介紹了一些關於R剖析的很好的討論:http://stackoverflow.com/questions/3650862/how-to-efficiently-use-rprof-in-r –
+我用過'rprof',很高興(這是一些)。我不在乎彙總工具。我只是抓住堆棧跟蹤結果文件並檢查它們。 –