do ループの終了条件が経過時間の処理(5秒間でどれだけオブザベーションを作成できるかで、その実行環境のスペックの一端を計る)

初めての環境でSASを使うとき
その環境でのSASのスペックを調べるのに、100万とか1000万回のループでoutputさせて
どれくらい処理時間かかるかを見て、目安にするのですが、結構古いPC環境だと
想像以上にかかってしまって、待ちぼうけになってしまうことがあります。

そこで逆に、5秒間でどれぐらいオブザベーションを作成できるかで比べるようにしました。
そしたら絶対に5秒ちょいで結果がわかるので。

ループの終了条件に、時間間隔を使ったプログラムを書くことはSASを使う開発では
通常少ないと思うので紹介します。

data A;
 STTIME=datetime();
  do while (datetime()-STTIME<5);
   X=1;output;
  end;
run;

datetime()は現在の日時をとる関数で、まずループに入る前に割り当てステートメントで
格納しておいて、そこからループ開始時点の日時と比較してその差が5秒未満である場合
に実行します。

0 件のコメント:

コメントを投稿