1
代碼如下:爲什麼這些語句需要不同的時間在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
他們花不同的時間來獲得結果,最大最小的近四倍。
,所以我想知道是什麼原因造成這種差異?。
看來=
和<-
之間的區別是略有speed.But有w1<-w1+2
和w1[1]<-w1[1]+2
之間的巨大差異。
索引分配需要更多操作。在這裏玩沒有編譯器優化。 –