R 性能差异(Solaris 与 Windows)

标签 r solaris

我注意到一个有趣的问题。如果我在具有 2GB RAM 的 Windows 3.00 GHz Core 2 Duo CPU 上在 R 2.12.0(32 位)中运行以下代码,它会在不到一秒的时间内运行。如果我在带有 sparc-sun-solaris2.10(也是 32 位,尽管 unix 盒可以运行 64 位)的 unix-box 上运行它需要 84 秒。 unix box的处理速度为2.5 GHz。如果我在代码运行时运行 top,我注意到我的 R 进程只占用了大约 3.2% 的可用 CPU 状态,即使还有更多可用状态。这可能是问题的一部分吗?我阅读了安装手册,但没有什么是我的问题的明显解决方案。 unix 操作系统是否以某种方式限制了可用资源,而 windows 则不是?或者,是否有一些更好的方法可以从未完成的源代码编译 R?如果我没有提供足够的信息来回答问题,我深表歉意,这不是我真正的专业领域。

t0 <- proc.time()[[3]]
x <- rnorm(10000)
for(i in 1:10000){
    sd(x)
}
print(proc.time()[[3]]-t0)

最佳答案

诸如 T1 或 T2 之类的处理器有多个内核,每个内核有多个线程(硬件级上下文切换)。如果您可以运行多线程应用程序,您将获得很大的吞吐量。一个典型的预期用例是基于 Java 的 Web 服务器,处理例如同时连接 20-40 个。

这类处理器的缺点是这些 SPARC 芯片的单线程性能非常低。它看起来像 Oracle is aware的问题; T4目前的开发重点是提高单线程速度。

T1 processor向操作系统公开 32 个逻辑 CPU。如果你是这种情况,显示的值是总算力的百分比,1/32 ~= 3.125%,和你看到的很接近。

要从 T1 处理器中获得所有性能,您需要让 R 使用多个 CPU,例如通过 multicore package .

关于R 性能差异(Solaris 与 Windows),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7660401/

相关文章:

shell - 测试远程 TCP 端口是否从 shell 脚本打开

c - Solaris LIBUMEM : Get "libmapmalloc.so.1 not found" when C application executes SUBPROCESS?

r - 使用包 texreg 和 RStudio/rmarkdown/knitr 创建模型汇总表的问题

unix - awk 脚本在 SunOS 中无法正常工作(在 Red Hat 中运行良好)

html - 使用 rvest 抓取在线 PDF

r - .SD 在 data.table 操作中的兴趣

java - 通过java运行firefox时出错

java - 类似的命令适用于solaris sparc

r - 如何将 R 数据帧拆分为向量(取消绑定(bind))

在 R 中的数据表中按降序重新标记簇(列)