如何加快运行时不断减慢的SAS BY语句?

How to speed up SAS BY statement which continuously slows down as it runs?

我通过 BY 语句在 SAS 中 运行 很多小型混合模型,总共需要几个小时。我还收集 ODS 输出以导出到 .csv 文件。从 Log window 中的输出我注意到程序在开始时运行得非常快,但在运行时会不断减慢。有什么办法可以加快速度吗?我在我的数据子集上考虑过 运行 它,但希望有一个更优雅的解决方案,它仍然会在最后导出单个 .csv 文件。这可能吗?谢谢!

我的代码:

ods listing;
ods output  Tests3=Tests3;

proc    MIXED   data=my_data;               
class   by_group    Factor1 Factor2 Factor3;    
model   response    = Factor1|Factor2   /   ddfm=satterth   s;
random  Factor3;
BY  by_group;   
run;    

proc    export  data=Tests3 outfile='.\Tests3.csv'  dbms=csv replace; run;

我能够通过添加

显着减少运行时间
ODS RESULTS OFF;

开头的语句,像这样:

ODS RESULTS OFF;
ods listing;
ods output  Tests3=Tests3;

proc    MIXED   data=my_data;               
class   by_group    Factor1 Factor2 Factor3;    
model   response    = Factor1|Factor2   /   ddfm=satterth   s;
random  Factor3;
BY  by_group;   
run;    

proc    export  data=Tests3 outfile='.\Tests3.csv'  dbms=csv replace; run;

这将运行时间从四个多小时减少到不到 30 分钟,并且在进行过程中没有明显的减速。显然,SAS 9.3 及更高版本会自动生成 HTML 格式的输出并将其保存到硬盘驱动器,除非特别告知不要这样做,并且该文件可能非常大,因为它包含大量格式信息。添加到这个不断增长的大文件是持续减速的原因。

需要注意的是,这个解决方案确实阻止了 "Results Viewer" window 的显示,但这很适合我目前的目的。另见

Suppressing HTML output in SAS

https://support.sas.com/resources/papers/proceedings12/250-2012.pdf