LISTSERV at the University of Georgia
Menubar Imagemap
Home Browse Manage Request Manuals Register
Previous (more recent) messageNext (less recent) messagePrevious (more recent) in topicNext (less recent) in topicPrevious (more recent) by same authorNext (less recent) by same authorPrevious page (August 1996, week 2)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:         Sun, 11 Aug 1996 23:43:40 -0700
Reply-To:     Andrew James Llwellyn Cary <ajlcary@IX.NETCOM.COM>
Sender:       "SAS(r) Discussion" <SAS-L@UGA.CC.UGA.EDU>
From:         Andrew James Llwellyn Cary <ajlcary@IX.NETCOM.COM>
Organization: Cary Consulting Services
Subject:      Re: stored program facility and macros

David

I have some good news and some bad news.

Compiling the datasteps may save you a little time (20% maybe). Compiling a macro probably almost none (10% maybe). Procedures are already compiled and will not be sped up by any process (other then increasing processor or disk access speed).

The time savings in the datastep compilation are almost all in the time it takes to compile the data code. Little savings are realized in execution of the compiled code (it is only executed after it is compiled in any case.) Since the algorithm you are using is compiling each datastep 100 times the savings there could be helpful.

Since you are only executing a macro once, (although you are looping 100 times) compiling the macro will probably do little to help the overall performance of the simulation. The most gain I have seen from compiling macros was when the macro was a complex beast with lots of branches of conditional execution used many times. I regard macro compilation as more of a code locking process then a performance improving one.

What would speed the process up would be to (if possible) try and do all the datastep processing in one pass using a by-group variable to specify the different iterations. This will of course only work if iterations are not dependent on calculations of preceding iterations...

For example (meta-code)

%Macro XXX (iter=100); %DO I=1 %TO &iter; data step... proc step... %END; %MEND;

could be turned into

DATA test; DO Iter=1 to 100; do stuff END; RUN; PROC step... BY ITER; RUN;

Substantial savings might be realized... David Gagnon wrote: > > I am running SAS simulations that essentially repeat the same operation > several hundred times. I was wondering if the stored program facility > could save me some time. > > The program essentially has an outer %DO loop that goes from 1 to 100 and > then has a series of data steps and macro calls that goes something like > this: > > %DO 1 %to 100; > 2 data steps > proc means > macro call with proc lifetest and several datasteps > data step > macro call with several data steps, IML and proc lifetest [EM algorithm] > data steps > %END > final data steps > > Will compiling some of the data steps help? Can entire macros be > compiled? Can compiled code include procedures [PROCS] ? I'd like to cut > down some of the running time on this program. Any help will be > appreciated. > > -- > >David< > David R. Gagnon, MD MPH (617) 638-4457 [voice] > Boston University School of Public Health (617) 638-4458 [fax] > "ecrasez l'infamie" > > http://www-busph.bu.edu/Depts/Epi-Biostats/David_HomePage.html

-- Andrew J. L. Cary | I Reckon that the Opinions Senior Curmudgeon | expressed here DO represent Cary Consulting Services, Newark, CA | those of the management of ajlcary@ix.netcom.com | Cary Consulting Services


Back to: Top of message | Previous page | Main SAS-L page