処理時間計測タイマ

Last-modified: 2009-10-19 (月) 16:18:59

SASの処理の経過時間を計る簡単なタイマーのマクロです。

処理開始時に、%timerstart() を実行し、時間を計りたい箇所で、%timermark()を実行させれば、開始時間からの経過秒数と、ひとつ前のmark時刻からの経過秒数をログに書き出します。

%macro timerstart();
/*時間計測開始*/
data _null_;
  datetime=datetime();
  call symput("start",datetime);
  call symput("mark",datetime);
  put "start : " datetime datetime.;
run;
%mend;
%macro timermark();
/*開始時刻からの経過秒数(from start)と直前の計測時刻からの経過秒数(from last)*/
data _null_;
  datetime=datetime();
  elaps1=datetime-&start;
  elaps2=datetime-&mark;
  call symput("mark",datetime);
  put "mark  : " datetime datetime. " ; elaps from start/last : " elaps1 "/" elaps2;
run;
%mend;

%timerstart();
/*start : 19OCT09:16:13:48*/

%timermark();
/*mark  : 19OCT09:16:14:00 ; elaps from start/last : 12.730999947 /12.730999947*/

%timermark();
/*mark  : 19OCT09:16:14:24 ; elaps from start/last : 36.119999886 /23.419999838*/