楼主: yukai08008
1332 1

[学习分享] 矩阵思维1sas代码_Andy的原创帖7 [推广有奖]

  • 2关注
  • 17粉丝

已卖:19份资源

讲师

2%

还不是VIP/贵宾

-

威望
0
论坛币
2176 个
通用积分
3.0600
学术水平
10 点
热心指数
7 点
信用等级
7 点
经验
5915 点
帖子
120
精华
0
在线时间
556 小时
注册时间
2012-11-28
最后登录
2022-4-11

楼主
yukai08008 在职认证  发表于 2016-1-30 23:27:54 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
打算用IML矩阵运算的方式替代掉base编程的方法,将做一系列的实验,比较两种方法的效率。
1、矩阵可以节约更多的代码
2、矩阵代表了一种更高维度的思考方法

运算数据ex:a={0 0 -2.5  4 0  3  0.5  8 -1...};

****************************base方法*************************************

data ss;

set test;

do i=1 to 10000000;

if col1 > 0 then p+1;

else if col1 < 0 then n+1;

end;

run;

循环1000万次

***********************IML方法******************************

proc iml;

a={0 -1 1 5 2 4 0 -1 2 6 9 -1 };

do i=1 to 10000000;

b=a>0;

c=a<0;

b_res=b[,+];

c_res=c[,+];

end;


quit;

****************************************************************************************

比较:代码的字数上差不多,但执行效率base的要高2个数量级。

a为3元素  IML: 4.69s Base:0.04s

a为6元素  IML:4.75s Base:0.06s

a为9元素  IML:4.66s Base:0.06s

a为12元素IML:4.69s Base:0.06s

a为18元素IML:4.85s Base:0.06s

a为45元素IML:5.91s Base 0.04s

(IML:600ns/次  Base:4ns/次)

结果:Base比IML快2个数量级

原因分析:

1、IML可能有许多预载项

2、IML的操作全部是“实”的,无论是比较(a>0)或者是累加b[,+],都是对所有元素进行了比较以及写入(最费时)。

3、Base使用逻辑判断,理论上比较的次数比IML要少一半(roughly),赋值的次数少一半。

结论:

1、IML的操作都是“实”操作,在进行大规模计算的时候要特别注意(100倍的时间代价)

2、是否有更好的IML语句?(或者更好的矩阵运算工具)

3、在关键代码上,IML比Base少一半,是存在很大的简洁性的。在构建更复杂的程序(算法)时,

更精简的关键逻辑意味着更少的错误和更高复杂功能的实现。


下一步:

继续比较其他方面的性能差异。


*************关键代码比较********************************************************

IML:

b=a>0;

c=a<0;

b =b[,+];


c =c[,+];

Base:

if col1 > 0 then p+1;


else if col1 < 0 then n+1;




二维码

扫码加我 拉你入群

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

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

关键词:sas代码 Andy rough Base Then

沙发
yukai08008 在职认证  发表于 2016-1-30 23:33:07
我的cpu是4G hz,也就是0.25ns一个周期,4ns用了16个时钟周期。(8核的,所以指令可能被并行处理,不考虑分支)

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-28 17:41