为什么我的(更强)桌面上的R慢于我(弱)笔记本电脑上的R?

Gio*_*oni 8 hardware r cpu-speed

我使用的Dell Latitude E7440 笔记本电脑与Windows 7企业OS,8GB RAM,64位操作系统,英特尔(R)核心(TM)i7-4600U CPU @ 2.10GHz处理器,2701兆赫,2个核,4个逻辑处理器(那是4个核心).

我使用的是Dell Precision塔式7810 桌面与Windows 7企业版操作系统,32GB的RAM,64位操作系统,英特尔(R)至强(R)CPU E5-2620 V3 @ 2.40GHz的2个处理器,2401兆赫,6个核心,12逻辑处理器(24核).

我使用R的一个很好的演示是使用gbmRStudio在具有约300个特征的100K大小的数据上运行二进制分类.但无论我在我的笔记本电脑R版本(所有其他软件关闭,不使用并行化)上做什么,都比我的桌面R版本快得多.怎么可能?我需要做些什么才能找到答案?

笔记本电脑:

> sum <- 0; system.time(for (i in 1:1000000) sum <- sum + i)
   user  system elapsed 
   0.36    0.00    0.36 
> memory.limit()
[1] 8097
> sessionInfo()
R version 3.3.1 (2016-06-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                           LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] tools_3.3.1
Run Code Online (Sandbox Code Playgroud)

桌面:

> sum <- 0; system.time(for (i in 1:1000000) sum <- sum + i)
   user  system elapsed 
   0.52    0.00    0.52 
> memory.limit()
[1] 32684
> sessionInfo()
R version 3.3.1 (2016-06-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                           LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] tools_3.3.1
Run Code Online (Sandbox Code Playgroud)

Hon*_*Ooi 6

戴尔Latitude E7440笔记本电脑... i7-4600U CPU @ 2.10GHz处理器,2701 Mhz

Dell Precision Tower 7810台式机... E5-2620 v3 @ 2.40GHz 2处理器,2401 Mhz

那就是原因.您的笔记本电脑的CPU运行速度比您的桌面更快,因此R运行速度更快.

在没有多线程BLAS或其他并行处理技巧的情况下,拥有多个内核不会影响问题.同样,只要你有足够的内存来保存你的数据,更多的千兆字节不会加快速度(除了缓存问题,但100K应该很容易适应两台机器上的缓存).