您的位置:首页 > 编程语言

IDL高效编程技巧

2009-07-08 20:30 162 查看
1、   IDL提供一系列的内置函数和程序来执行常用的操作,这些系统内置的函数都是经过优化的,要比采用IDL编写的通过循环和下标操作来进行的同样功能的程序要快速。举例来说,对数组进行运算的时候,尽量不用使用循环而使用IDL内置的一些数组操作函数来实现。

2、   表达式的次序对执行的速度也有很大的影响:

考虑以下表达式:
B=A*16. /Max(A)

该表达式对A数组的每一元素乘上16,再对A数组的每一个元素再除以A数组的最大值。整个操作使用了两次A的数组元素。

更加快速的实现方法如下:
B=16./Max(A) *A

这种情况下只对A进行了一次运算就完成了整个操作。

3、   避免在循环内使用IF表达式,而使用逻辑数组运算

例如:
    FOR I=0L, N_ELEMENTS(data)-1L   DO $

       IF (data[i] LE 30) THEN $

         Data[i]=30

快速的实现方法为:
Dex=WHERE(data LE 30 ,n)

IF(n GT 0) THEN data[dex]=30

更快的实现方法为:
   Data=(data GT 30) *data+(data LE 30)*30

最快的实现方法为:

   Data=data >30

4、   在循环中移除不变的表达式

5、   在使用BYTARR, COMPLEXARR, DCOMPLEXARR, FLTARR, INTARR, LONARR, MAKE_ARRAY, OBJARR
, 以及PTRARR创建数组是加上NOZERO关键字,防止数组默认填零,可使速度加快


6、   在处理大的数组时,使用TEMPORARY函数来最小化内存需求。
A=TEMPORARY(A)+1

7、   函数的调用有很大的开销,尽量避免使用只有一行的函数。

8、   在不使用指针和对象后,及时清除它们。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  编程 优化