检查R代码中哪个行/函数在函数内花费的时间最多?

时间:2018-08-14 06:25:47

标签: r profiling performance-testing

我有一组在包装器中运行的功能:

wrapper_func <- function(x,y,z,.....) {

t <- foo1(x,y)
kuku <- foo2(t,z)
....
final_res <- foo20(t, kuku, ...)

return(final_res)

}

运行缓慢,我想了解谁是瓶颈/麻烦制造者。 请告知哪个函数可以执行更深入的分析(基准?微基准??),以显示向下钻取-哪个行/函数花费最多的时间/资源?

我发现了另一个option

并转到使用lineprof进行内存分析一章。

你怎么看?

2 个答案:

答案 0 :(得分:3)

您可以使用Rprof来配置R代码并查找性能瓶颈。这是一个简短的例子

tmp <- tempfile()
Rprof(tmp)
example(glm)
Rprof()
summaryRprof(tmp)

可以在this R-bloggers article上找到更详细的描述。

答案 1 :(得分:1)

您可以打印microbenchmark的结果以查看您的性能瓶颈:

library(microbenchmark)

wrapper_func <- function(x,y,z,.....) {

  t <- foo1(x,y)
  print(microbenchmark(foo1(x,y)))
  kuku <- foo2(t,z)
  print(microbenchmark(foo2(t,z)))
  ....
  final_res <- foo20(t, kuku, ...)
  print(microbenchmark(foo20(t, kuku, ...)))

  return(final_res)

}