为什么这些语句需要不同的时间在R中运行?

时间:2016-05-14 07:56:38

标签: r

代码如下:

a<-function(){
  for(i in 1:1000000)
    w1<-w1+2
  w1
}

b<-function(){
  for(i in 1:1000000)
    w1[1]<-w1[1]+2
  w1
}

c<-function(){
  for(i in 1:1000000)
    w1[1]=w1[1]+2
  w1
}

w1<-1
system.time(a()) #0.39
system.time(b()) #1.78
system.time(c()) #1.89

唯一的区别是:

w1<-w1+2
w1[1]<-w1[1]+2
w1[1]=w1[1]+2

他们花费不同的时间来获得结果,最大值几乎是最小值的四倍。

所以我想知道导致这种差异的原因是什么?

=<-之间的差异似乎略有不同。但w1<-w1+2w1[1]<-w1[1]+2之间存在巨大差异。

1 个答案:

答案 0 :(得分:2)

差异是开销。

函数a只是将两个数字相加并将结果存储在内存中。

函数bc正在从向量中检索值并将结果存储在向量中。向量的读取和写入会导致额外的开销,这需要额外的时间。