4

すべてにおいて素晴らしいパフォーマンスの向上を経験したので、すべてのデータセットを SPDE ライブラリに移動してきました。proc transpose を実行するまでのすべて。これは、通常の v9 ライブラリに保存されている同じデータセットよりも、SPDE データセットで実行するのに約 60 倍の時間がかかります。データセットは item_id でソートされます。同じライブラリに対して読み取り/書き込みが行われています。

なぜこれが当てはまるのか、誰にも分かりますか?SPDE と Proc Transpose がうまく連携しないことについて何か重要なことを見逃していますか?

SPDE ライブラリ

MPRINT(XMLIMPORT_VANTAGE):   proc transpose data = smplus.links_response_mechanism out = smplus.response_mechanism (drop = _NAME_) 
prefix = rm_;
MPRINT(XMLIMPORT_VANTAGE):   by item_id;
MPRINT(XMLIMPORT_VANTAGE):   id lookup_code;
MPRINT(XMLIMPORT_VANTAGE):   var x;
MPRINT(XMLIMPORT_VANTAGE):   run;

NOTE: There were 5866747 observations read from the data set SMPLUS.LINKS_RESPONSE_MECHANISM.
NOTE: The data set SMPLUS.RESPONSE_MECHANISM has 3209353 observations and 14 variables.
NOTE: Compressing data set SMPLUS.RESPONSE_MECHANISM decreased size by 37.98 percent.
NOTE: PROCEDURE TRANSPOSE used (Total process time):
      real time           28:27.63
      cpu time            28:34.64

V9 ライブラリ

MPRINT(XMLIMPORT_VANTAGE):   proc transpose data = mplus.links_response_mechanism out = mplus.response_mechanism (drop = _NAME_) 
prefix = rm_;
MPRINT(XMLIMPORT_VANTAGE):   by item_id;
68                                                         The SAS System                             02:00 Thursday, August 8, 2013

MPRINT(XMLIMPORT_VANTAGE):   id lookup_code;
MPRINT(XMLIMPORT_VANTAGE):   var x;
MPRINT(XMLIMPORT_VANTAGE):   run;

NOTE: There were 5866747 observations read from the data set MPLUS.LINKS_RESPONSE_MECHANISM.
NOTE: The data set MPLUS.RESPONSE_MECHANISM has 3209353 observations and 14 variables.
NOTE: Compressing data set MPLUS.RESPONSE_MECHANISM decreased size by 27.60 percent. 
      Compressed is 32271 pages; un-compressed would require 44572 pages.
NOTE: PROCEDURE TRANSPOSE used (Total process time):
      real time           28.76 seconds
      cpu time            28.79 seconds
4

3 に答える 3

3

PROC TRANSPOSE と SPDE に問題があるようです。これは単純な SSCCE で、大きな違いがあります。あなたのものほど重要ではありませんが、そもそもこれがデスクトップ上にあることの要因である可能性があります。SAS テクニカル サポートへの電話が適切なようです。

libname spdelib spde 'c:\temp\SPDE Main' 
    datapath=('c:\temp\SPDE Data' 'd:\temp\SPDE Data')
    indexpath=('d:\temp\SPDE Index')
    partsize=512;

libname mainlib 'c:\temp\';


data mainlib.bigdata;
do ID = 1 to 1500000;
  do _varn=1 to 10;
    varname=cats("Var_",_varn);
    vardata=ranuni(7);
    output;
  end;
end;
run;
data  spdelib.bigdata;
do ID = 1 to 1500000;
  do _varn=1 to 10;
    varname=cats("Var_",_varn);
    vardata=ranuni(7);
    output;
  end;
end;
run;
*These data steps take roughly the same amount of time, around 30 seconds each;

proc transpose data=spdelib.bigdata out=spdelib.transdata;
by id;
id varname;
var vardata;
run;
*Run a few times, this takes around 3 to 4 minutes, with 1.5 minutes CPU time;

proc transpose data=mainlib.bigdata out=mainlib.transdata;
by id;
id varname;
var vardata;
run;
*Run a few times, this takes around 30 to 45 seconds, with 20 seconds CPU time;
于 2013-08-08T17:00:15.607 に答える
1

少なくともバージョン 4.1 までは、SPDE と proc 比較に関する既知の問題が過去 (マルチスレッドではない) にありました。どのバージョンを使用していますか? (「!install/logs」フォルダーで確認できます)。

これは間違いなくSASサポートで提起するものであり、物事を「スピードアップ」するために、次のオプションを使用してログを送信することをお勧めします:

proc setinit noalias; run; 
proc options; run; 
%put _ALL_; 
options fullstimer msglevel=i;

また:

options spdedebug='DA_TRACEIO_OCR CJNL=Trace.txt';

(CJNL オプションは、トレース メッセージ出力をテキスト ファイルにルーティングするだけです)

それまでの間、次の SPD 固有のオプションの一部を利用できる場合があります。

http://support.sas.com/kb/11/349.html

于 2013-08-08T22:33:45.017 に答える