09-29-2014 10:21 AM
I used SAS 9.4 in a laptop to run some simulation studies. At beginning, the program runs very fast, just keep running and running. After the program ran for several hours, it become much slower.
For example, at beginning, it will take the program 2 hrs to finish one simulation scenario, but it may take two days to finish similar scenario some time later. I checked the log and found that SAS will stop for several minutes and do nothing after it finishes one simulation data sets, then it will continue. Any ideas about what happened, and how I can resolve it?
Thanks for the help.
09-29-2014 10:50 AM
We probably need more details, but my guess is that you are appending the results of each simulation. Read this article and see if it describes what you are attempting: Simulation in SAS
If that doesn't describe what you are doing, post some of your code.
09-30-2014 09:54 AM
Thanks for the reply. I read that article, actually I used DO in my simulation codes instead of BY. Your 'BY' method is efficient, but since I need Bootstrap method to calculate 95% CI, so I cannot concatenate the data sets together and use 'BY' method, since it is too big. Actually, my problem is not code specific. When the codes generate the first several hundred simulated data set using DO loop, the program runs very fast, but as time goes on, it looks like something is stored in the memory that slows down the program. That is what I observed.
09-30-2014 10:45 AM
Great. In SAS/IML that is one way to do it if you have big data: use a DO loop for each bootstrap resample and store the statistics for each resample in an array.
However, you need to preallocate your array for the results. It sounds like you might be using a concatenation operator inside the DO loop to dynamically increase the array. Read this article: Pre-allocate arrays to improve efficiency - The DO Loop