SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 759|回复: 3
打印 上一主题 下一主题

多语句共享数据?

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2012-2-20 18:19:26 | 只看该作者

多语句共享数据?

我想了半天,对于处理中反复用到的数据,又不能在一个data,proc步内解决的问题,不管是temp array还是hash table,都得在每个步的时候导入数据,那么就会浪费大量时间,fetchobs和批量全局宏变量,效率又值得商榷~那么,还有什么好办法可以实现TDV和PDV/SDV的快速转换,数据共享查询么?请教各位大侠

要是计算机语言,直接映射结构,然后处理直接就可以针对映射的结构处理了啊~
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2012-2-22 01:09:48 | 只看该作者

Re: 多语句共享数据?

似乎只能sasfile open或者memlib了,我有时候使用IML的submit+memlib.
如果还不行,或许,你可以写一个动态库?不过我感觉这个的意义不大。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2012-2-22 19:49:23 | 只看该作者

Re: 多语句共享数据?

[quote="jeozu":x578ij2d]似乎只能sasfile open或者memlib了,我有时候使用IML的submit+memlib.
如果还不行,或许,你可以写一个动态库?不过我感觉这个的意义不大。[/quote:x578ij2d]


动态库调用试过,效果相当一般。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2012-2-22 20:04:56 | 只看该作者

Re: 多语句共享数据?

这两天不是一直走这个脑子么,然后居然发现了这个情况~虽然凭借经验我能猜出个大概,提前预分配内存,方便PDV,TDV调整,但是谁能给个准信儿啊~
另外linux系统的也看看是不是效率有差别呢~感谢!

我觉得这将近20倍的效率差别相当值得讨论一下的~
如果用memlib的话就是20倍的效率差别,如果用work而work本身映射硬盘直接,会看出来length的效率慢一倍,但是木length的并不会也变慢,这个应该是证明了之前PDV,TDV的假设?

[code:35uax6u6]data a;
do i=1 to 1000000;
output;
end;
run;
data mydata(drop=rc dsid);
length i 8;
   dsid=open("work.a","i");
   call set (dsid);
   do j=1 to 1000000;
      cc=abs(floor(rannor(1234)*100000));
      rc=fetchobs(dsid,cc);
      output;
   end;
run;
data mydata(drop=rc dsid);
   dsid=open("work.a","i");
   call set (dsid);
   do j=1 to 1000000;
      cc=abs(floor(rannor(1234)*100000));
      rc=fetchobs(dsid,cc);
      output;
   end;
run;[/code:35uax6u6]

另外还有木有更快的方法?
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-5-7 00:34 , Processed in 0.069097 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表