| createTable | noTheads | Threads | ||||
RealTime | CpuTime | RealTime | CpuTime | RealTime | CpuTime | ||
100*100*100 | Base Engine | 0:02.54 | 0:01.48 | 0:02.06 | 0:02.06 | 0:01.09 | 0:03.39 |
SPD Engine | 0:05.29 | 0:00.87 | 0:01.98 | 0:1.98 | 0:01.81 | 0:03.43 | |
100*100*500 | Base Engine | 0:16.75 | 0:08.36 | 0:09.56 | 0:09.56 | 0:04.65 | 0:15.98 |
SPD Engine | 0:23.81 | 0:04.35 | 0:09.10 | 0:09.07 | 0:04.85 | 0:16.11 | |
100*100*2000 | Base Engine | 0:54.93 | 0:31.73 | 0:53.90 | 0:37.65 | 0:37.53 | 1:09.43 |
SPD Engine | 1:37.51 | 0:20.03 | 1:09.51 | 0:35.60 | 0:33.23 | 1:09.17 |
结论:
1. Threads效果明显;
2. SPD Engine目标生成效率不如BaseEngine;
3. 在普通SCSI/IDE存储下,SPDEngine无效果或效果不明显;
注:以下summary相当于sql中计算21个统计量:
1(count)+4(sum)+4(min)+4(max)+4(mean)+4(Std)
libname spd spde 'e:/' datapath=('e:/' 'f:/' 'g:/') partsize=32;
/************* SPD Engine ****************/
options cpucount=4;
data spd.spdtest;
do i=1 to 100; do j=1 to 100;do k=1 to 2000;
x=sin(i);y=x;z=x;
output;end;end;end;run;
options THREADS;
proc summary data=spd.spdtest nway missing;
class i j;var x y z k;output out=o;run;
options noTHREADS;
proc summary data=spd.spdtest nway missing;
class i j;var x y z k;output out=o;run;
/************* Base Engine ****************/
data spdtest;
do i=1 to 100; do j=1 to 100;do k=1 to 2000;
x=sin(i);y=x;z=x;
output;end;end;end;run;
options THREADS;
proc summary data=spdtest nway missing;
class i j;var x y z k;output out=o;run;
options noTHREADS;
proc summary data=spdtest nway missing;
class i j;var x y z k;output out=o;run;