IDL中数组在内存中是按行存储的。
对于这个规律的应用,可以考虑把数组转置一下再算。
案例:
time1=systime(1)
x=dist(2000,2000)
for i=0,1999 do begin
x[i,*]=x[i,*]*(-1)
endfor
print,systime(1)-time1
time1=systime(1)
for i=0,1999 do begin
x[*,i]=x[*,i]*(-1)
endfor
print,systime(1)-time1
结果:
0.13800001
0.019999981