comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Re: Dos and Donts
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Re: Dos and Donts [message #21918 is a reply to message #21899] Wed, 27 September 2000 00:00 Go to previous messageGo to previous message
Liam E. Gumley is currently offline  Liam E. Gumley
Messages: 378
Registered: January 2000
Senior Member
brinks wrote:
> I'm preparing a little talk about efficient programming in IDL. From the
> help files and from my own experience I found many hints about 'what to
> do and not to do' to speed up code in IDL. The most things I listed so
> far are about array operations and data arrangement, avoiding loops etc.
> Taking an intensive look into the help system I found some little tricks
> to improve speed, e.g. using rotation for image rotation by 90 deg
> rather than rot(...,90). Up to now I didn't know that there is a
> difference at all.
>
> I am sure there are many more odds and ends to improve IDL code. Does
> anyone out there can give my a hint where to find more of those tricks?
> Links, recommendation of a book, or just some direct tips would be very
> helpfull.

http://www.rsinc.com/services/output.cfm?tip_id=1799

http://www.sf.med.va.gov/mrs/IDL/idl_docs.htm#MEMORY USAGE REDUCTION IN
IDL

And the online document 'Building IDL applications', section
'Programming in IDL'.

And finally, one from me. The TEMPORARY function can often be used to
conserve memory. However it's not immediately obvious (at least it
wasn't to me until recently) how to use TEMPORARY when extracting an
array subset.

For example, TEMPORARY saves no memory in the following example:

a = dist(256)
b = temporary(a[0:63, 0:63])
help, a, b
A FLOAT = Array[256, 256]
B FLOAT = Array[64, 64]

The argument a[0:63, 0:63] is passed to TEMPORARY by value, and
therefore cannot be modified. However the following method *does* save
memory:

a = dist(256)
b = (temporary(a))[0:63, 0:63]
help, a, b
A UNDEFINED = <Undefined>
B FLOAT = Array[64, 64]

Cheers,
Liam.
http://cimss.ssec.wisc.edu/~gumley
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Previous Topic: new IDL mapping application
Next Topic: Re: triangulate proc

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Fri Oct 10 01:51:47 PDT 2025

Total time taken to generate the page: 0.16038 seconds