2009-10-14 42 views
3

在使用SAS中的不同數據集一到兩個月後,在我看來,數據集所具有的變量越多,在數據集上運行PROC和其他操作所需的時間就越多。然而,如果我有5個變量,但有100萬個觀測值,性能不會受到太多影響。影響SAS數據集性能的因素更多 - 觀察次數或變量數量?

雖然我對如果觀察結果或變量影響性能感興趣,但我還想知道在查看SAS性能時是否還有其他因素?

謝謝!

回答

4

對於相同大小的數據集(行*列),具有更多變量的數據集通常會比較慢,我相信。我試着創建兩個數據集,分別是1行和10000列,或者1列和10000行。具有更多變量的變量需要更多的內存和時間。

options fullstimer; 
data a; 
    retain var1-var10000 1; 
run; 
data b(drop=i); 
    do i=1 to 10000; 
    var1=i; 
    output; 
    end; 
run; 

在登錄

31 options fullstimer; 
32 data a; 
33  retain var1-var10000 1; 
34 run; 

NOTE: The data set WORK.A has 1 observations and 10000 variables. 
NOTE: DATA statement used (Total process time): 
     real time   0.23 seconds 
     user cpu time  0.20 seconds 
     system cpu time  0.03 seconds 
     Memory       5382k 
     OS Memory       14208k 
     Timestamp   10/14/2009 2:03:57 PM 


35 data b(drop=i); 
36  do i=1 to 10000; 
37  var1=i; 
38  output; 
39  end; 
40 run; 

NOTE: The data set WORK.B has 10000 observations and 1 variables. 
NOTE: DATA statement used (Total process time): 
     real time   0.01 seconds 
     user cpu time  0.00 seconds 
     system cpu time  0.01 seconds 
     Memory       173k 
     OS Memory       12144k 
     Timestamp   10/14/2009 2:03:57 PM 

您也應該檢查BUFNO=BUFSIZE=。如果您必須多次訪問數據集,則可以考慮使用SASFILE以將整個數據集存儲在內存中。

+0

SASFILE聽起來是有用的,但我的數據集的機器我在(〜1.8GB太大,我也得到不斷未足夠內存錯誤,當我嘗試到SASFILE吧)。感謝您做這些快速測試! – chucknelson 2009-10-15 12:19:26

2

我不能完全闡明(並且正在進行有根據的猜測),但我想這與一系列因素有關,包括整個記錄被讀入PDV,這意味着更多的數據位於有許多變量的記憶。

對壓縮數據集進行一些測量可能是值得的,因爲I/O往往是瓶頸。

SAS數據集選項:

data foo(compress=yes); 
... 
run; 
+0

謝謝,我想我今天會嘗試壓縮。我正在運行的機器上的HD在運行數百個我正在使用的PROC REPORT語句時經常發生顛簸,所以我認爲這絕對是I/O,compress可能會有所幫助! – chucknelson 2009-10-15 12:20:38

+0

壓縮對我的大數據集幫助很大。謝謝! – chucknelson 2009-10-15 17:00:24

+0

除了單個數據集之外,您還可以將壓縮設置爲全局選項或將庫設置爲不同粒度級別的庫選項。 – cmjohns 2009-10-15 18:07:36