2009-10-14 1 views
3

После работы с различными наборами данных в SAS в течение месяца или двух, мне кажется, что чем больше переменных имеет набор данных, тем больше времени требуется для запуска PROC и других операций над набором данных. Тем не менее, если у меня есть, например, 5 переменных, но 1 миллион наблюдений, производительность слишком сильно не влияет.Что влияет на производительность набора данных 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,8 Гб, и я получаю постоянные ошибки не-достаточно-памяти, когда я пытаюсь для SASFILE). Спасибо за выполнение этих быстрых тестов! – chucknelson

2

Я не могу полностью разъяснить (и я получаю обоснованное предположение), но я полагаю, что это имеет какое-то отношение к совокупности факторов, в том числе, что вся запись считывается в PDV, что означает, что больше данных находится в память со многими переменными.

Возможно, стоит выполнить некоторые измерения со сжатыми наборами данных, потому что ввод-вывод часто является узким местом.

SAS вариант набора данных:

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

Спасибо, я думаю, что сегодня я попробую сжатие. HD на машине, на которой я работаю, постоянно бьется при запуске сотен инструкций PROC REPORT, которые я сейчас использую, поэтому я думаю, что это определенно I/O и сжатие может помочь! – chucknelson

+0

Compressions помогает совсем немного с моим большим набором данных. Благодаря! – chucknelson

+0

В дополнение к единым наборам данных вы также можете установить сжатие как глобальную опцию или как вариант библиотеки для разных уровней детализации. – cmjohns

 Смежные вопросы

  • Нет связанных вопросов^_^