如何更快地生产crossprod

时间:2018-12-12 14:11:22

标签: r

(在我的2.9 GHz Intel Core i7和16 GB内存的MBP上)要花费20多秒钟才能得到40,000 x 1,000矩阵的叉积:

> system.time(a <- crossprod(matrix(pi,40000,1000)))
   user  system elapsed 
 23.808   0.139  24.001 

有没有办法使它更快?感谢您的帮助。

1 个答案:

答案 0 :(得分:5)

通过更改代码?基本上没有crossprod直接调用已编译的代码,将很难发现任何性能提升,而且发现的提升很小。

(除非情况恶化,否则矩阵的密度有多大?如果您有很多0,那么使用稀疏矩阵可能会有所帮助。我还假设您的矩阵不仅仅是像您的矩阵一样的常数矩阵例子。

您还可以使用Microsoft的Revolution R Open(已编译为使用其他的BLAS),或者自己使用更优化的BLAS编译R。此链接has good details on that。对于纯线性代数操作,这可能会产生很大的影响。 This site显示了矩阵乘法,cholesky分解等的数量级加速。