Les données sont générées dynamiquement par un `DATA STEP` au sein de la macro (`do x=1 to size; output; end;`) pour créer un dataset de la taille spécifiée. Aucune donnée externe ou issue de SASHELP n'est utilisée pour le contenu du dataset testé.
1 Bloc de code
Macro-définition et initialisation
Explication : Ce bloc définit la macro `%mp_testwritespeedlibrary` avec ses paramètres et leurs valeurs par défaut. Il déclare les variables macro locales `ds` (pour le nom du dataset temporaire) et `start` (pour l'horodatage de début). Il utilise une boucle `%do %until` avec les macros `%mf_getuniquename()` et `%mf_existds()` pour générer un nom de dataset unique qui n'existe pas encore dans la bibliothèque spécifiée, garantissant l'absence de conflit. Enfin, il capture l'heure de début de l'opération via `%sysfunc(datetime())`.
Copié !
%macro mp_testwritespeedlibrary(lib=WORK
,outds=work.results
,size=0.1
)/*/STORE SOURCE*/;
%local ds start;
/* find an unused, unique name for the new table */
%let ds=%mf_getuniquename();
%do %until(%mf_existds(&lib..&ds)=0);
%let ds=%mf_getuniquename();
%end;
%let start=%sysfunc(datetime());
1
%macro mp_testwritespeedlibrary(lib=WORK
2
,outds=work.results
3
,size=0.1
4
)/*/STORE SOURCE*/;
5
%local ds start;
6
7
/* find an unused, unique name for the new table */
8
%let ds=%mf_getuniquename();
9
%DO %until(%mf_existds(&lib..&ds)=0);
10
%let ds=%mf_getuniquename();
11
%END;
12
13
%let start=%sysfunc(datetime());
2 Bloc de code
DATA STEP Data
Explication : Ce `DATA STEP` est le cœur de la mesure de performance. Il crée un dataset nommé `&lib..&ds` (le nom unique généré précédemment) sans compression (`compress=no`) et en ne conservant qu'une colonne `x` (`keep=x`). La variable `size` est calculée pour déterminer le nombre d'observations nécessaires pour atteindre la taille cible spécifiée par le paramètre `size` de la macro (converti de GB en octets et ajusté pour un 'header'). La boucle `do x=1 to size; output; end;` génère les observations, simulant ainsi une charge d'écriture importante.
Copié !
data &lib..&ds(compress=no keep=x);
header=128*1024;
size=(1073741824/8 * &size) - header;
do x=1 to size;
output;
end;
run;
1
DATA &lib..&ds(compress=no keep=x);
2
header=128*1024;
3
size=(1073741824/8 * &size) - header;
4
DO x=1 to size;
5
OUTPUT;
6
END;
7
RUN;
3 Bloc de code
PROC SQL
Explication : Ce bloc `PROC SQL` exécute une instruction `DROP TABLE` pour supprimer le dataset temporaire `&lib..&ds` créé précédemment. C'est une étape de nettoyage essentielle pour éviter l'encombrement de la bibliothèque et s'assurer que les tests sont reproductibles sans résidus d'opérations antérieures.
Copié !
proc sql;
drop table &lib..&ds;
run;
1
PROC SQL;
2
drop TABLE &lib..&ds;
3
RUN;
4 Bloc de code
DATA STEP Data
Explication : Ce `DATA STEP` crée le dataset final `&outds` qui contient les résultats du test de performance. Il enregistre le nom de la bibliothèque (`lib`), l'heure de début (`start_dttm`) et de fin (`end_dttm`) de l'opération d'écriture (formatées en `datetime19.`). La `duration_seconds` est calculée en soustrayant le temps de début du temps de fin, fournissant une mesure directe de la vitesse d'écriture.
Copié !
data &outds;
lib="&lib";
start_dttm=put(&start,datetime19.);
end_dttm=put(datetime(),datetime19.);
duration_seconds=end_dttm-start_dttm;
run;
1
DATA &outds;
2
lib="&lib";
3
start_dttm=put(&start,datetime19.);
4
end_dttm=put(datetime(),datetime19.);
5
duration_seconds=end_dttm-start_dttm;
6
RUN;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : Copyright (c) 2001-2006 Rodney Sparapani (issu de `_version.sas`), sous licence GNU General Public License. Le bloc HELP de la macro référence également 'Copyright 2010-2023 HMS Analytical Software GmbH'.
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.