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+2
和w1[1]<-w1[1]+2
之间存在巨大差异。
答案 0 :(得分:2)
差异是开销。
函数a
只是将两个数字相加并将结果存储在内存中。
函数b
和c
正在从向量中检索值并将结果存储在向量中。向量的读取和写入会导致额外的开销,这需要额外的时间。