Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 19: Introduction to Efficient SAS Programming 1 STAT 541 ©Spring 2012 Imelda Go, John Grego, Jennifer Lasecki and the University of South Carolina.

Similar presentations


Presentation on theme: "Chapter 19: Introduction to Efficient SAS Programming 1 STAT 541 ©Spring 2012 Imelda Go, John Grego, Jennifer Lasecki and the University of South Carolina."— Presentation transcript:

1 Chapter 19: Introduction to Efficient SAS Programming 1 STAT 541 ©Spring 2012 Imelda Go, John Grego, Jennifer Lasecki and the University of South Carolina

2 2 SAS System Options to Track Resources We have already used STIMER We have already used STIMER –CPU Time and Real Time FULLSTIMER tracks additional resources (though perhaps not as many as listed here) FULLSTIMER tracks additional resources (though perhaps not as many as listed here) –I/O swaps –Number of buffers –Buffer size –Memory

3 3 SAS System Options to Track Resources My system’s output from FULLSTIMER: My system’s output from FULLSTIMER: NOTE: PROCEDURE SORT used (Total process time): NOTE: PROCEDURE SORT used (Total process time): real time 0.04 seconds real time 0.04 seconds user cpu time 0.00 seconds user cpu time 0.00 seconds system cpu time 0.00 seconds system cpu time 0.00 seconds Memory 88k Memory 88k OS Memory 10920k OS Memory 10920k Timestamp 4/16/2012 11:26:43 AM

4 4 SAS System Options to Track Resources Typical considerations Typical considerations –Real time/CPU time –Increasing buffer size/# of pages vs. Memory –Decreasing I/O vs. Memory

5 5 Benchmarking The chapters that follow will use benchmarking to study The chapters that follow will use benchmarking to study –Memory Usage –Data Storage Space –Best Practices –Efficient Sorting

6 6 Benchmarking The chapters that follow will use benchmarking to study The chapters that follow will use benchmarking to study –Memory Usage –Data Storage Space –Best Practices –Efficient Sorting

7 7 Benchmarking SAS uses data sets of various sizes from SASUSER for benchmarking on a variety of straightforward tasks SAS uses data sets of various sizes from SASUSER for benchmarking on a variety of straightforward tasks Benchmarking guidelines are detailed Benchmarking guidelines are detailed –Include only essential code –Replication –Realistic conditions

8 Chapter 20: Controlling Memory Usage 8 STAT 541 ©Spring 2012 Imelda Go, John Grego, Jennifer Lasecki and the University of South Carolina

9 9 Page Size and Buffers SAS copies data a “page” at a time to a buffer in memory SAS copies data a “page” at a time to a buffer in memory Observations are loaded into the PDV (Program Data Vector) one at a time, processed, then read to an output buffer Observations are loaded into the PDV (Program Data Vector) one at a time, processed, then read to an output buffer When the output buffer is full, its contents are written to an output SAS data set. When the output buffer is full, its contents are written to an output SAS data set. I/O is measured when input data is copied to the input buffer and when output buffer contents are written to the external data set. I/O is measured when input data is copied to the input buffer and when output buffer contents are written to the external data set.

10 10 Page Size and Buffers We could reduce the number of I/O operations (or swaps) by increasing the page (or buffer) size, or by increasing the number of buffers (some systems allow only a single buffer) We could reduce the number of I/O operations (or swaps) by increasing the page (or buffer) size, or by increasing the number of buffers (some systems allow only a single buffer) PROC CONTENTS can print the page size PROC CONTENTS can print the page size Use BUFSIZE and BUFNO options to change the page size and # of buffers Use BUFSIZE and BUFNO options to change the page size and # of buffers –Obviously, such changes should not be made without an understanding of system defaults etc

11 11 Page Size and Buffers Example Example proc contents data=stat541.meddb; run; data meddb; set stat541.meddb; run; data meddb (bufsize=6144 bufno=2); set stat541.meddb; run;

12 12 SASFILE The SASFILE statement holds the data set in memory. The SASFILE statement holds the data set in memory. Useful when Useful when –The data will be used for multiple data/proc steps –Sufficient real memory is available –A part of the data can be processed separately Be aware of unintended consequences when not enough memory is available. Be aware of unintended consequences when not enough memory is available.


Download ppt "Chapter 19: Introduction to Efficient SAS Programming 1 STAT 541 ©Spring 2012 Imelda Go, John Grego, Jennifer Lasecki and the University of South Carolina."

Similar presentations


Ads by Google