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

时间:2016-08-11 07:46:12

标签: r

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

Perfomance benchmark from 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

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

1 个答案:

答案 0 :(得分:0)

三个不同点:

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

提示:通过替换 .dll 文件(Rblas.dllRlapack.dll ) 使用正确的 .dll,可以从同一个 MRO 安装或 NumPy 的 Windows 构建中获取(类似于 openblas.dllopenblas.lib,前者应复制两次并重命名) .