首页 > 解决方案 > 在主函数之外声明辅助函数是否更有效?

问题描述

当我逐步调试这种功能时:

foo <- function(x) {
  helper <- function(x) x^2
  2 * helper(x)
}

我看到每次都会评估辅助函数定义。在调试模式下是否相同?在时间执行方面是不是很糟糕?

标签: rperformancefunctional-programming

解决方案


你可以自己试试。我没有看到太大的不同。当我尝试它时,内部或外部在不同的运行中更快。

library(microbenchmark)

foo1 <- function(x) {
  helper <- function(x) x^2
  2 * helper(x)
}

helper <- function(x) x^2
foo2 <- function(x) {
  2 * helper(x)
}

microbenchmark(
  inside = foo1(1:1000),
  outside = foo2(1:1000),
  times = 1000
)

推荐阅读