请选择 进入手机版 | 继续访问电脑版
楼主: 龙潭丰乐
2155 8

[学习分享] sas优化程序感悟 [推广有奖]

  • 14关注
  • 4粉丝

讲师

50%

还不是VIP/贵宾

-

威望
0
论坛币
6 个
通用积分
0
学术水平
25 点
热心指数
29 点
信用等级
14 点
经验
8652 点
帖子
458
精华
0
在线时间
466 小时
注册时间
2011-11-20
最后登录
2022-1-6

龙潭丰乐 学生认证  发表于 2012-12-29 23:52:26 |显示全部楼层 |坛友微信交流群

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

1、  if语句创造子数据集,if语句存在的位置与sas的内存有关,显然if语句放在前面减少sas内存。If判断语句放在前面,直接选取了符合我们的数据,另外部分不用进入计算,所以会优化我们的程序。

2、  if/else与select语句

(1)      对于字符变量,if/else比select语句更高效。

(2)      一般select语句的数据值是分布式的(我理解是类似离散型的数据)

(3)      也可以把do循环放到if/else与select语句中

3、  排除不必要的传递

(1)      使用一个数据步创造多个数据集

(2)      使用datasets步去修改变量属性。(只能修改变量属性,而不能该变量值)

(3)      使用含有where语句的sort过程去创造排序的子集

4.whereif判断的区别

if语句把全部数据加载到pdv里面,而where只选取了符合我们要求的数据,所以显然where比if优化,高效。

4、  keep与drop的使用

当keep=、drop=使用在set、merge后面,pdv里面只生成我们需要的变量。而drop、keep使用在数据步里面,效果一样。

5、避免不必要的程序调用

用一个过程完成多个任务(例如 procsql/proc datasets等)


仅供大家参考,有些地方自己翻译、理解的不全面,详细请参考 sas advance。欢迎大家批评指正。




二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:datasets dataset ADVANCE Select Elect 程序

已有 2 人评分学术水平 热心指数 信用等级 收起 理由
skylargrey + 1 + 1 + 1 观点有启发
jingju11 + 5 + 5 + 2 分析的有道理

总评分: 学术水平 + 6  热心指数 + 6  信用等级 + 3   查看全部评分

本帖被以下文库推荐

Woody0115 发表于 2012-12-30 00:25:19 |显示全部楼层 |坛友微信交流群
谢谢楼主!

使用道具

zhangg 发表于 2012-12-30 14:56:14 |显示全部楼层 |坛友微信交流群
4、  keep与drop的使用

当keep=、drop=使用在set、merge后面,pdv里面只生成我们需要的变量。而drop、keep使用在数据步里面,效果一样。

-----------------------------------------
效果不一样。
如果是用在数据集后,意味着数据集里的keep变量进入PDV;如果是用在data步,意味着数据集中所有的变量都进入了PDV。哪个效率更高,可想而知。

使用道具

zkymath 在职认证  发表于 2012-12-31 01:08:23 |显示全部楼层 |坛友微信交流群
楼上正解

使用道具

龙潭丰乐 学生认证  发表于 2013-1-18 15:04:42 |显示全部楼层 |坛友微信交流群
zhangg 发表于 2012-12-30 14:56
4、  keep与drop的使用

当keep=、drop=使用在set、merge后面,pdv里面只生成我们需要的变量。而drop、ke ...
不好意思  理解有误。谢谢更正这个。

使用道具

龙潭丰乐 学生认证  发表于 2013-1-18 15:07:10 |显示全部楼层 |坛友微信交流群
对于 substr、scan等字符型函数,可以通过之前定义其长度从而进行优化。
此处列举两个base里面的考题,scan函数的默认长度是200,substr函数的长度于其处理的变量长度一样。所以提前定义其长度,可以进行优化。

使用道具

dengwei715 发表于 2013-1-18 17:35:50 |显示全部楼层 |坛友微信交流群
顶一个~~~~~~~~

使用道具

Bridgenc 发表于 2013-1-18 20:49:35 |显示全部楼层 |坛友微信交流群
use compress=yes  can make programs running faster

使用道具

bjpucl 发表于 2014-2-12 09:11:17 |显示全部楼层 |坛友微信交流群
多谢分享。。。

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-3-28 22:03