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

时间:2016-10-26 09:26:43

标签: r hardware cpu-speed

我使用戴尔Latitude E7440 笔记本电脑与Windows 7企业操作系统, 8GB RAM ,64位操作系统,英特尔(R)Core(TM) i7-4600U CPU @ 2.10GHz处理器,2701 Mhz,2个核心,4个逻辑处理器(即4核)。

我使用Dell Precision Tower 7810 桌面与Windows 7企业操作系统, 32GB RAM ,64位操作系统,英特尔(R)Xeon(R )CPU E5-2620 v3 @ 2.40GHz 2 处理器,2401 Mhz,6个核心,12个逻辑处理器(即24个核心)。

我使用R的一个很好的演示是使用RStudio中的gbm在具有约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

桌面:

> 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

1 个答案:

答案 0 :(得分: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应该很容易适应两台机器上的缓存)。