Det gode SAS-program #22A: Benyt ELSE statement og reducér svartid

2

I SAS® kan man skrive lige så mange IF statements, man har lyst til i datasteppet. Hvert IF statement bliver udført for hver eneste række. Du kan spare CPU-tid ved at benytte ELSE statements, hvorved kun de nødvendige IF statements udføres for hver række.
Vi anbefaler: Benyt ELSE statement, når du har flere IF statements på samme kolonne i et datastep  

Eksempel
Her et lille testprogram. Du kan selv prøve det på din computer. Vi danner en større SAS-tabel på 29 millioner rækker, så vi kan måle en signifikant besparelse på CPU-tiden.

Eksempel1

Som testeksempel ønsker vi at tildele bonus afhængig af værdien i kolonnen product_line. Vi skriver seks IF statements efter hinanden, som tester på samme kolonne. Dette tager ca. seks CPU-sekunder at udføre på min PC i SAS Studio.

Eksempel2

Nedenstående program reducerer CPU-tiden med 25%
Vi har tilføjet et ELSE statement på alle IF statements undtagen det første IF statement. Det betyder, at hvis f.eks. product_line er lig med ’Children’, så udføres kun de første tre IF-sætninger for den række.  Samtidig har vi ændret på rækkefølgen, så vi tester efter de mest hyppige værdier af product_line først. Samlet set medfører disse to forhold, at vi minimerer antallet af IF statements, der skal udføres per række. Og derfor reduceres CPU-tiden, så programmet kører hurtigere.

Eksempel3

Besparelsen ved at indføre ELSE statement afhænger af dine data og antallet af IF statements du benytter. Vi kan ikke sige noget specifikt om besparelsen. Den kan være lille, men den kan også være stor, måske endda helt op til 50% i meget specielle tilfælde. Men brug bare altid ELSE som ovenfor, så har du gjort det bedst muligt.

Bemærk:
Vi kunne også benytte et SELECT statement til at opnå samme forbedring. Koden er forskellig, men resultatet vil være identisk med ELSE-programlinjerne.

Koden fra eksemplet kan findes her

Share

About Author

Georg Morsing

Education Director

Georg Morsing, SAS Community Senior Manager, har arbejdet med SAS-software siden 1981. Først på Statistisk Kontor i Københavns Kommune og siden 1985 hos SAS Institute. Georg har en bred og dyb erfaring med anvendelse af SAS-software fra stillinger som uddannelseschef, konsulentchef og softwareudviklingschef. Georg har ansvar for faglige netværk og brugerkonferencer i Danmark. Her på bloggen giver han tips og tricks til optimal og effektiv SAS-programmering.

2 Comments

  1. Peter Clemmensen on

    Hej Georg 🙂 Tak for endnu et indlæg, jeg er stor fan af din 'Det gode SAS-program' serie her på bloggen. Simple tricks med stor effekt! Har lige et spørgsmål. Er det med overlæg at du poster kodestumper som billeder, så man ikke kan copy-paste den ind i sin editor? VH

Leave A Reply

Back to Top