如何使crossprod更快

cha*_*142 1 r

它需要(在我的MBP上使用2.9 GHz Intel Core i7和16 GB内存)超过20秒才能获得40,000 x 1,000矩阵的交叉产品:

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

有没有办法让它更快?谢谢你的帮助.

Gre*_*gor 5

通过更改您的代码?基本上没有.crossprod直接调用已编译的代码,您将很难找到任何性能提升,而您发现的任何内容都会很小.

(除非情有可原 - 你的矩阵有多密集?如果你有很多0,那么使用稀疏矩阵可能会有所帮助.我还假设你的矩阵不仅仅是一个常数矩阵,如你的例子所示.)

您也可以使用Microsoft的Revolution R Open,它被编译为使用不同的BLAS,或者使用更优化的BLAS自己编译R. 这个链接有很好的细节.对于纯线性代数操作,这可能会产生相当大的影响.该站点显示了矩阵乘法,cholesky分解等的数量级加速.

  • 您不需要使用MRO或自己编译R. 只需符号链接到你想要使用的BLAS.请参阅/sf/ask/1972536541/和https://cran.r-project.org/bin/macosx/RMacOSX-FAQ.html#Which -BLAS-is-used-and-how-can-be-changed_003f(但请注意,FAQ中提到的路径是错误的). (2认同)