中是否有一个 no-op 函数,这样即使参数的计算成本很高,它也会立即返回?我正在寻找stopifnot
函数的条件替换。
> noop(runif(1e20))
# returns immediately and uses no memory
我认为这样做可以:
noop <- function(...) invisible(NULL)
由于懒惰的评估在这里派上用场:
R> system.time(replicate(1e4, noop(runif(1e2))))
user system elapsed
0.01 0.00 0.01
R> system.time(replicate(1e4, noop(runif(1e5))))
user system elapsed
0.01 0.00 0.02
R> system.time(replicate(1e4, noop(runif(1e8))))
user system elapsed
0.01 0.00 0.01
R> system.time(replicate(1e4, noop(runif(1e11))))
user system elapsed
0.01 0.00 0.01
R>
因此,即使我们增加 N 也看不到运行时增加。