Microsoft R Open(MRO)和R有什么区别?

Gal*_* Re 6 r

我真的想知道MRO和R之间的主要区别是什么.然后我发现MRO比R更快的信息,因为它有多线程.

来自mran.microsoft.com的性能基准测试

我真的很有趣,所以我想自己测试一下.首先,我安装MRO + MKL,然后我将在MRO和R中运行一些脚本代码,然后计算时间.

这是我的例子(矩阵乘法)代码:

start.time <- Sys.time()

d <- numeric(5); 
res <- replicate(5, {for(i in 1:3500){d[i] <- print(i)} ; d})
rex=res*res^0.6*res^-1
rex

end.time <- Sys.time()
time.taken <- end.time - start.time
time.taken
Run Code Online (Sandbox Code Playgroud)

但时间结果并没有什么不同(几乎相同).我尝试另外的计算,如gwr(500数据),读取和写入所有SHP数据,但得到相同的结果.谁知道为什么结果不一样?或者我的代码不够复杂,无法测试差异?如果是这样,你能给我一些例子吗?

any*_*ker 1

三个区别:

  • MRO 附带英特尔 MKL 作为线性代数运算(BLAS nad LAPACK)的后端,而基础 R(适用于 Windows)提供了 BLAS 和 LAPACK 的未优化替代品,运行速度会慢得多。这会影响矩阵乘法、求解线性系统、特征值等(搜索 BLAS 基准),但不会影响决策树等循环或模型。如果是 Windows 以外的平台,则不会产生任何影响,因为 R 将链接到系统的默认 BLAS(通常是 MKL 或 OpenBLAS,具体取决于特定操作系统)。
  • MRO 有自己的 CRAN 镜像,因此它在软件包更新方面会落后,并且从那里下载软件包的速度可能会较慢。如果您知道自己在做什么,则可以禁用此功能。对于某些包(特别是处理多线程),它们也可能提供一些非默认配置。
  • MRO 将为 R 会话自动生成默认初始化脚本,该脚本会打印烦人的消息并更改一些配置选项,例如从哪里下载存储库。

.dll提示:通过将文件 (Rblas.dll和Rlapack.dll) 替换为正确的 ,可以在 Windows 的默认 R 安装中获得相同的优化 BLAS 和 LAPACK 库(例如 MKL、OpenBLAS).dll,这些文件可以从相同的 MRO 安装或 NumPy 的 Windows 中获取构建(类似于openblas.dll和openblas.lib,前者应该复制两次并重命名)。