运行时比较的准确性
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
包,它可以更精确地计算 运行 次。
所有,我想知道下面是否可以让我准确评估这些函数的运行时间。如果我知道复制是否按顺序进行,我会对结果充满信心,但我不知道。谢谢
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
包,它可以更精确地计算 运行 次。