运行时比较的准确性

Accuracy of comparison of runtime

所有,我想知道下面是否可以让我准确评估这些函数的运行时间。如果我知道复制是否按顺序进行,我会对结果充满信心,但我不知道。谢谢

system.time(replicate(8000,function1(4,5)))
system.time(replicate(8000,function2(4,5)))
system.time(replicate(8000,function3(4,5)))

如果你查看 replicate 的源代码,你会看到它是这样的:

> replicate
function (n, expr, simplify = "array") 
sapply(integer(n), eval.parent(substitute(function(...) expr)), 
    simplify = simplify)
<bytecode: 0x000000000b3b1ee8>
<environment: namespace:base>

因为它在源代码中使用了 sapply,所以它是连续的,因为 sapply 实际上是用 C 编写的 for-loop。所以,是的,在这方面,这是一个相当准确的评估。

您也可以尝试 microbenchmark 包,它可以更精确地计算 运行 次。