为什么 R 在我的(强)台式机上比在我的(弱)笔记本电脑上慢?

Why is R slower on my (stronger) Desktop than on my (weaker) laptop?

我使用的是 Dell Latitude E7440 笔记本电脑 Windows 7 Enterprise OS,8GB 内存 , 64 位 OS, Intel(R) Core(TM) i7-4600U CPU @ 2.10GHz 处理器,2701 Mhz,2 核,4 逻辑处理器(即 4 核)。

我使用的是 Dell Precision Tower 7810 台式机,Windows 7 Enterprise OS,32GB RAM, 64 位 OS, Intel(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

Dell Latitude E7440 Laptop ... i7-4600U CPU @ 2.10GHz Processor, 2701 Mhz

Dell Precision Tower 7810 Desktop ... E5-2620 v3 @ 2.40GHz 2 Processors, 2401 Mhz

这就是原因。您的笔记本电脑 CPU 运行 物理时钟速度比台式机快,因此 R 也运行得更快。

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