我一直在尝试从Sys.time()开始,以一些简单的操作开始计算费用。
我从这样的事情开始
a=c(10,6,8,3,2,7,9,11,13)
t_beginning=Sys.time()
cl2=NULL
indx=which(a==7)
t_ending=Sys.time()
print(t_ending-t_beginning)
在Rstudio中运行代码后,它给了我0.0023秒的时间。
然后将代码放入for循环中以查找两行的平均费用。
sum=0
a=c(10,6,8,3,2,7,9,11,13)
for (i in 1:5) {
print(i)
t_beginning=Sys.time()
cl2=NULL
indx=which(a==7)
t_ending=Sys.time()
sum=t_ending-t_beginning+sum
print(t_ending-t_beginning)
}
sum/5
事实证明,对于for循环中的每个迭代,时间消耗仅为几毫秒,比从for循环中花费的时间少得多。
[1] 1
Time difference of 7.152557e-06 secs
[1] 2
Time difference of 5.00679e-06 secs
[1] 3
Time difference of 4.053116e-06 secs
[1] 4
Time difference of 4.053116e-06 secs
[1] 5
Time difference of 5.00679e-06 secs
我希望for循环的平均时间成本与没有循环的平均时间成本大致相同,但是它们却相差甚远。不知道为什么会这样。谁能复制相同的东西?谢谢!
答案 0 :(得分:0)
差异来自RStudio(或R)运行代码的方式。 原始代码是逐行执行的,因此获得的时间包括RStudio和R之间的接口。
a=c(10,6,8,3,2,7,9,11,13)
t_beginning=Sys.time()
cl2=NULL
indx=which(a==7)
t_ending=Sys.time()
print(t_ending-t_beginning)
# Time difference of 0.02099395 secs
但是,如果您通过将代码包装在弯曲的括号中一次运行所有这些代码,则可以大大改善时间:
{
a=c(10,6,8,3,2,7,9,11,13)
t_beginning=Sys.time()
cl2=NULL
indx=which(a==7)
t_ending=Sys.time()
print(t_ending-t_beginning)
}
# Time difference of 0 secs