我注意到一个有趣的问题。如果我在具有 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/