1.算法优化(减少idl变量内存占用的方法)
(当然,减小内存的需求是当你的数据量较大时,可采用以下方法,若数据量较小,则可忽略)
1.两种表达式书写方式:
(1)data1=data12
(2)data2=data12
很明显,(1)只开辟了一块内存,所以推荐使用(1)
2.data=!null
将程序中不用的变量设为空值,以释放内存
3.data=0B
4.data1=temporary(data)*10
执行语句之后,data会被释放掉
5.只能在命令行输入的:(控制台删除变量)
delvar,data
2.运行时间
1.tic toc 的使用
例子1:
pro test_li
tic
for i=1,10000000 do begin
i=i+10
endfor
toc
END
结果:tic,toc会给出程序运行的时间:
IDL> test_li
% Compiled module: TEST_LI.
% Time elapsed: 0.043999910 seconds.
IDL>
例子2:
pro test_li
; Grab the initial system time with TIC
TIC
for i=0, 3 do begin & $
; Start another clock named FFT
; combined with the iteration number
clock = TIC('FFT' + STRTRIM(i, 2)) & $
r = FFT(RANDOMU(seed, 1729, 1729)) & $
; For each iteration grab the end system time,
; then calculate and and print out the elapsed time
TOC, clock & $
endfor
; Grab the final system for the entire loop
; and calculate and print the total elapsed time
TOC
END
结果:
IDL> test_li
% Compiled module: TEST_LI.
% Time elapsed FFT0: 0.46999979 seconds.
% Time elapsed FFT1: 0.44800019 seconds.
% Time elapsed FFT2: 0.47899985 seconds.
% Time elapsed FFT3: 0.45700002 seconds.
% Time elapsed: 1.8539999 seconds.
IDL>
2.获取儒略日
获取当前时间儒略日,并变换格式
IDL> print,format='(C())',systime(/julian)
Wed Apr 22 16:34:30 2020
IDL> print,systime(/julian)
2458962.2
IDL>
3.编译规则
在进行ENVI/IDL二次开发时,常看到别人的程序里写着:
1.
IDL> compile_opt defint32
设置在程序里创建变量为32位,而不是默认的16位
2.
IDL> compile_opt strictarr
在此程序中使用严格的数组使用,即不可在用()来调用数组,必须使用[ ]
3.
IDL> compile_opt idl2
这个命令是上面两个命令的综合