SAS中文论坛
标题:
求助:关于SAS程序执行的效率问题
[打印本页]
作者:
shiyiming
时间:
2008-9-11 10:45
标题:
求助:关于SAS程序执行的效率问题
我的SAS程序是有大概4~5千行左右,由于其中使用了大量的宏变量以及嵌套了很多的循环,执行起来效率非常低,我的程序主要用来生成散点图和箱体图。
如果只要做十几个图还好,大概4,5分钟,如果要做上百张,一千张,需要运行2个小时才能结束。
请教高手,要改善程序的执行效率问题,要从哪些方面着手?
作者:
shiyiming
时间:
2008-9-12 09:53
标题:
Re: 求助:关于SAS程序执行的效率问题
这个帖子看来无人问津了。。。
作者:
shiyiming
时间:
2008-9-12 10:47
标题:
Re: 求助:关于SAS程序执行的效率问题
你的问题这么大,不可能有回答的。就像“谁能告诉我怎么开发信用评分卡,从哪里入手啊?”一样的。只能靠自己学、看、试。
明路就是:请拜读SAS Programming III: Advanced Techniques and Efficiencies。很经典,很实用,有很多高级优化技巧。
作者:
shiyiming
时间:
2008-9-12 10:57
标题:
to shiyiming
原来是这样,看来是这个需求超出了我目前的能力了,我们公司只出钱让我参加了SAS Programming I,II 和SAS macro三门课程的培训。
跟老板说去,再让我去参加个Programming III的培训。
谢了, <!-- s:-) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":-)" title="Smile" /><!-- s:-) -->
作者:
shiyiming
时间:
2008-9-12 11:04
标题:
to jackyyb
你们公司好有钱哦,能参加这么多课程。 <!-- s8) --><img src="{SMILIES_PATH}/icon_cool.gif" alt="8)" title="Cool" /><!-- s8) -->
作者:
shiyiming
时间:
2008-9-12 11:08
标题:
to shiyiming
三门课加起来才一万多啊,个人出感觉还是不大舍得,公司嘛,就小菜一碟了。
作者:
shiyiming
时间:
2008-9-17 09:12
标题:
Re: 求助:关于SAS程序执行的效率问题
个人建议:
Method 1: 把内存加到8G,跑起来或许会快很多 hehe
Method 2: macro的过多使用尽量建立在具有重用性的基础之上,这点sas tutor也有提及. 另外, 大量log or output可考虑外部输出,以提高系统使用效率.按照你的这个数量级多多少少会有些影响的.
作者:
shiyiming
时间:
2008-9-17 09:35
标题:
to dwdus
我的程序是在HP-UNIX Itanium上跑的,内存没有8G也有6G吧,
我正在测这个程序呢,你说的log or output用外部输出是怎么回事,我一般都不用%put的,我的log文件就是一些MPRINT, MLOGIC,symbolgen的东东,而且在正式运行的时候这些是不启用的。
我的程序的大致逻辑是,一个很大的宏(3千多行),就叫macro1吧,用来配置一个dataset,里面的每一行代表画一个chart的配置信息,然后另外有一个宏,是用来接收一个参数并画一个chart的,就叫macro2如果我把前面创建的dataset传到这个宏就能画出图来。
1) macro1读取数据文件,生成源数据 dataset
2)macro1读取配置文件,生成配置数据集 dataset------这个是最复杂的,也是最浪费时间的,内部都是用宏语句控制大概有3千~4千行,也有若干的data步和proc步。
3)macro1调用macro1,并传入配置数据集和源数据集
4)输出生成的chart到HTML
我现在的问题是在第2步,配置那个数据集时,开发的时候样例只要生成几张图就OK了,时间还比较短。现在用户一下子创建了300张图,我测了一下,配置一个图的时间需要超过30分钟,300张图大概就需要9000分钟(150个小时,这还仅仅是配置的时间),后来我在一个关键的循环里面加入了%goto语句,省略了一些不必要的循环,大大的提高了效率,但是还是远远不够。
我昨天晚上17:12:07开始运行,到现在已经运行了16个小时了,我早上到办公室一看,才运行到第117个图的配置。
SAS的macro的执行效率怎么就这么慢呢。
欢迎光临 SAS中文论坛 (https://mysas.net/forum/)
Powered by Discuz! X3.2