楼主: jason_udu
1185 3

宏的数量及速度问题? [推广有奖]

  • 1关注
  • 1粉丝

已卖:393份资源

硕士生

16%

还不是VIP/贵宾

-

威望
0
论坛币
672 个
通用积分
9.4462
学术水平
5 点
热心指数
5 点
信用等级
5 点
经验
2717 点
帖子
57
精华
0
在线时间
153 小时
注册时间
2007-3-26
最后登录
2025-10-8

楼主
jason_udu 发表于 2012-10-29 10:19:44 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我在一个data步里面大约用了3000个宏变量来记录中间变量(symget和symput语句),速度突然变成很慢!之前使用1000左右的宏变量时,速度还可以。
请教大虾,是不是SAS使用宏变量太多会造成速度非常慢?

O(∩_∩)O谢谢{:soso_e183:}{:soso_e183:}{:soso_e183:}{:soso_e183:}

二维码

扫码加我 拉你入群

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

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

关键词:symput put语句 data步 SOSO 中间变量 速度

沙发
playmore 发表于 2012-10-29 13:32:48
程序可否进一步优化
是否可避免使用这么多的宏变量
如果需要这么多的中间宏变量
可以考虑用Hash对象
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

藤椅
jason_udu 发表于 2012-11-2 08:54:06
hash对象是什么?

板凳
bobguy 发表于 2012-11-3 10:35:36
Not sure what is your problem.

Ten thousand macro variables of symputx + symget looks very fast and easy.

146      data _null_;
147         do i=1 to 10000;
148            call symputx(catt('n',i),i);
149         end;
150      run;

NOTE: DATA statement used (Total process time):
      real time           0.06 seconds
      cpu time            0.06 seconds


151
152      data tmp;
153         do i=1 to 10000;
154            x=symget(catt('n',i));
155            output;
156         end;
157      run;

NOTE: The data set WORK.TMP has 10000 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.07 seconds
      cpu time            0.06 seconds

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-4 05:06