作者wheado (principal component QQ)
看板R_Language
标题[问题] 矩阵相乘与平行运算的问题
时间Sat Apr 22 13:47:26 2017
[问题类型]:
效能谘询(我想让R 跑更快)
[软体熟悉度]:
入门(写过其他程式,只是对语法不熟悉)
[问题叙述]:
两个矩阵相乘如果
使用apply 或
将一个矩阵拆成许多的list使用lapply
会不会比较快?
如果有一群大矩阵以及一群向量需要进行矩阵相乘,
想办法建立成矩阵相乘是否是最快的?
[程式范例]:
http://ideone.com/OVgQOx
我试的结果好像是矩阵相乘是最快的
但是我的记忆体不够大,不能尝试更大的矩阵
> a <- matrix(rnorm(10000000),ncol = 1000);
> dim(a)
[1] 10000 1000
> b <- matrix(rnorm(200000), nrow = 1000);
> dim(b)
[1] 1000 200
>
> start <- proc.time();
> d1 <- a%*%b;
> end <- proc.time();
> end - start;
user system elapsed
1.85 0.00 1.84
>
> start <- proc.time();
> d2 <- apply(a,1,function(x) x%*%b)
> end <- proc.time();
> end - start;
user system elapsed
10.73 0.07 10.83
>
> start <- proc.time();
> a1 <- apply(a,1,function(x) list((x)));
> d3 <- lapply(a1, function(x) x[[1]]%*%b)
> end <- proc.time();
> end - start;
user system elapsed
9.49 0.06 9.58
[环境叙述]:
R version 3.3.2 (2016-10-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 180.217.166.11
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1492840049.A.A97.html
1F:→ celestialgod: 直接乘用BLAS最快,BLAS的计算复杂度最低 04/22 15:43
2F:→ celestialgod: 改用MRO可以有比较快的BLAS库 04/22 15:44
3F:→ wheado: BLAS是什麽意思?MRO指的是Microsoft R Open吗? 04/22 16:26
4F:→ celestialgod: BLAS GOOGLE WIKI有写 04/22 16:36
5F:→ celestialgod: MRO是Microsoft R Open没错 04/22 16:36