首页 > 代码库 > sas优化技巧(1) 追踪资源使用情况选项,控制内存使用情况bufsize、bufno、sasfile、ibufsize
sas优化技巧(1) 追踪资源使用情况选项,控制内存使用情况bufsize、bufno、sasfile、ibufsize
CPU time:the amount of time the central processing unit (CPU) uses to perform requested tasks such as calculations, reading and writing data, conditional logic, and iterative logic.CPU time is measured when data must be processed in the program data vector.
I/O:a measurement of the read and write operations that are performed as data and programs are copied from a storage device to memory (input) or from memory to a storage or display device (output).
1:用sas选项来追踪资源使用情况
选项关键词前面加NO,可以取消该选项。
2:控制内存使用情况
2.1:Measuring I/O
Improvement in I/O can come at the cost of increased memory consumption
用一张图展示缓冲区也就是memory的那块与I/O的关系
I/O的计算是在从数据集到缓冲区和从缓冲区到数据集这两部分组成
2.1:如何改变单次I/O读入数据的大小?
2.1.1 page size
在sas中page size和buffer size是一个意思,那么增加size就会减少I/O也是一个很自然的道理,但是这样的代价就是memory consumption的消耗增加
sas通过一系列算法来给定一个默认的page size,对于多任务的sas程序很实用,但是需要手动改变page size也是可以的。
一般不用min,会出现不可预见的问题。
如果用copy过程拷贝数据集,原有的page size不会保留
2.1.2 page no
BUFNO= control the number of buffers that are available for reading or writing a SAS data set with each I/O transfer
建议使用10
总结:对于小数据集,尽可能的一次性分配可以足够读取数据集的buffer
3:使用sasfile语句
sasfile语句可以将数据集hold在内存中,减少open/close操作,包括释放和分配内存
在data步或proc步,sas会自动释放buffer,在这个程序中如果不用sasfile,company.sales则要被读取两次,浪费了资源
sasfile company.sales load;proc print data=company.sales;var Customer_Age_Group;run;proc tabulate data=company.sales;class Customer_Age_Group;var Customer_BirthDate;table Customer_Age_Group,Customer_BirthDate*(mean median);run;sasfile company.sales close;
总结
1:If you need to repeatedly process a SAS data file that will fit entirely in memory,use the SASFILE statement to reduce I/O and some CPU usage
2:If you use the SASFILE statement and the SAS data file will not fit entirely in memory, the code will execute, but there might be a degradation in performance
3:如果只要反复文件的一部分,则最好用sasfile,这样提升效率
4:用IBUFSIZE=改变索引缓存的大小
这对于经常用索引的程序有改善,但是改变大小后要重新建立索引
IBUFSIZE=0重新设置为系统默认大小
sas优化技巧(1) 追踪资源使用情况选项,控制内存使用情况bufsize、bufno、sasfile、ibufsize