为什么这些语句需要不同的时间在R中运行?
问题描述:
代码如下:为什么这些语句需要不同的时间在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
之间的巨大差异。
答
区别在于开销。
功能a
简单地把两个数相加,并把结果存储在存储器中。
功能b
和c
是从矢量检索值和将结果存储在载体中。从矢量读取和写入会导致额外的开销,这会花费额外的时间。
+0
功能** a **当编写用于计算的代码时更好一些? – lemmingxuan
索引分配需要更多操作。在这里玩没有编译器优化。 –