(在我的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
有没有办法使它更快?感谢您的帮助。
答案 0 :(得分:5)
通过更改代码?基本上没有crossprod
直接调用已编译的代码,将很难发现任何性能提升,而且发现的提升很小。
(除非情况恶化,否则矩阵的密度有多大?如果您有很多0,那么使用稀疏矩阵可能会有所帮助。我还假设您的矩阵不仅仅是像您的矩阵一样的常数矩阵例子。
您还可以使用Microsoft的Revolution R Open(已编译为使用其他的BLAS),或者自己使用更优化的BLAS编译R。此链接has good details on that。对于纯线性代数操作,这可能会产生很大的影响。 This site显示了矩阵乘法,cholesky分解等的数量级加速。