【发布时间】:2013-06-20 11:54:40
【问题描述】:
我正在设计一个算法,并试图查看 R 中的每个步骤需要多少时间,以及整个过程需要多少时间。要获取时间信息,我使用 proc.time() 命令。似乎所有迭代的每个步骤的时间与总时间不匹配。让我举个例子更好地说明:
t0 <- proc.time()
for (i in 1 :100){
t1<- proc.time()
step 1
t1 <- proc.time() - t1
t2<- proc.time()
step 2
t2 <- proc.time() - t2
}
t0 <- proc.time() - t0
所以,现在如果我将 100 次迭代的所有 t1 和 t2 相加,我们看到这个时间小于 t0 或数学上,
(t1 + t2) for 100 steps < t0
上述行为的原因是什么?以及我们如何才能摆脱这种行为,因为这会极大地影响算法的运行时间。
【问题讨论】:
-
它们有何不同?
-
所以,我正在运行这个迭代 28000 次,其中有近 10 个步骤,每次迭代的时间量都不同,在我所做的运行中,t1、t2、t3 .. . 28000 次迭代的 t10 增加了 7 小时,而 t0 为 13 小时。所以,几乎额外的 6 个小时,我会说这是巨大的
-
正如 Livius 所说,如果你只是将 t1、t2 的最后一个值相加并且有很大的变化,那很可能是错误的
-
我建议将您的算法拆分并在
step1和step2上独立运行microbenchmark。