The following are some
additional features of SAS that you can control to improve system
performance and make efficient use of your computer's resources. For
additional information about optimizing SAS performance, see the chapter
on optimizing system performance in
SAS Language Reference: Concepts.
-
Create SAS data sets instead of
accessing flat ASCII files. SAS can access a SAS data set more efficiently
than it can read flat files.
Also, you should convert
existing data sets that you use frequently to SAS 9.3 format.
-
In your SAS code, use IF-THEN-ELSE
conditional structures instead of multiple IF-THEN structures. When
one condition in the IF-THEN-ELSE structure is met, control returns
to the top of the structure (skipping the ELSE clause, which might
contain subsequent IF-THEN structures). With multiple IF-THEN structures,
each condition must be checked.
-
When using arrays, make them _TEMPORARY_
if possible. This action requires less memory and less time for memory
allocation.
-
Use programming structures that
reduce file I/O, the most time-intensive aspect of SAS processing.
Some ideas for reducing file I/O are:
-
Use the WHERE statement in a procedure
to reduce extra data processing.
-
Use indexed data sets to speed
access to the desired observations.
-
Use the SQL procedure to subset
and group your data.
-
Experiment with the value of the CATCACHE
system option, which specifies the number of SAS catalogs to keep
open at one time. By default, no catalogs are cached in memory (and
CATCACHE is set to 0). Caching catalogs is an advantage if one SAS
application uses catalogs that are subsequently needed by another
SAS application. The second SAS application can access the cached
catalog more efficiently.
Note: Storing catalogs in memory
can consume considerable resources. Use this technique only if memory
issues are not a concern.
-
Store your data sets in a compressed
format (using the COMPRESS data set option). This action can improve
the performance of your SAS application, though it might require more
CPU time to decompress observations as SAS needs them. The COMPRESS
data set option is described in the data set options section of
SAS Data Set Options: Reference.
-
If you
specify the Scatter-read/Gather-write system option, SGIO, SAS bypasses
intermediate buffer transfers when reading or writing data. SAS will
read ahead the number of pages specified by the BUFNO system option
and place the data in memory before it is needed. When the data is
needed it is already in memory, and is in effect a direct memory access.
Different values for the BUFNO system option should be tried for each
SAS job to find the maximum performance benefit. For more information
see
Achieving Better I/O Throughput Using SGIO in the Microsoft
Windows Environment
Scatter–read
/ gather–write is active only for SAS I/O opened in INPUT,
OUTPUT mode, and UPDATE mode if the access pattern is sequential.
If any SAS I/O files are opened in UPDATE or RANDOM mode, SGIO is
inactive for that process. Compressed and encrypted files can also
be read ahead using scatter-read/gather-write. For more information
about the SGIO system option, see
SGIO System Option: Windows.