Date: Fri, 7 Sep 2001 10:24:09 -0400
Reply-To: Ian Whitlock <WHITLOI1@WESTAT.COM>
Sender: "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From: Ian Whitlock <WHITLOI1@WESTAT.COM>
Subject: Re: efficiency
Content-Type: text/plain; charset="iso-8859-1"
Bobby,
Your SYMGET calls are probably a bottle neck not needed.
retain macvar "&macvar" ;
interacts with the macro facility once to place the value of the macro
variable in the symbol table into the DATA step PDV.
macvar = symget ( "macvar" ) ;
does the same thing, but since it is executable it does it once for each
iteration of the DATA step. So if you have 100,000 records that is 100,000
interactions with the macro facility and one should expect abysmal
performance.
On the other hand, SYMGET or RESOLVE must be used when the value of the
macro
variable is changing during the DATA step. If this is the case then you
should probably consider alternative solutions avoiding extensive DATA step
macro facility interaction.
IanWhitlock@westat.com
-----Original Message-----
From: bobby [mailto:itp_group@HOTMAIL.COM]
Sent: Friday, September 07, 2001 2:12 AM
To: SAS-L@LISTSERV.UGA.EDU
Subject: efficiency
we are using SAS v6.12 with many data set queries and macro
statements(includes, symgets and symputs). am wondering if there are
any suggestions for increased efficiency.
also how can %include statments be placed in loops?
can arrays be made visible to all modules %included?
how much does the size of a data set(486k records presently) being
used effect speed?
ie: at moment am using:
data X;
symget...
symget...
set (old set)
if m
if
if
any other suggestions pls.
thanks