为什么 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 应该很容易适合两台机器的缓存)。
我使用的是 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 应该很容易适合两台机器的缓存)。