【问题标题】:Snowfall's sfApply and sfClusterApplyLB is slower than normal loop or sapply [duplicate]Snowfall 的 sfApply 和 sfClusterApplyLB 比正常循环或 sapply 慢 [重复]
【发布时间】:2013-07-29 10:36:24
【问题描述】:

当我在 R 中应用此代码时,循环和 sapply 比降雪的函数更快。我究竟做错了什么? (使用 Windows 8)

library(snowfall)
a<- 2
sfInit(parallel = TRUE, cpus = 4)
wrapper <- function(x){((x*a)^2)/3}
sfExport('a')
values <- seq(0, 100,1)
benchmark(for(i in 1:length(values)){wrapper(i)},sapply(values,wrapper),sfLapply(values, wrapper),sfClusterApplyLB(values, wrapper))
sfStop()

100 次复制后经过的时间:

循环 0.05 0.07 sfClusterApplySB 2.94 sf应用 0.26

【问题讨论】:

    标签: r snowfall


    【解决方案1】:

    如果发送到每个工作节点的函数花费的时间很少,并行化的开销会导致任务的总持续时间比串行运行作业花费的时间更长。当发送到工作节点的作业花费大量时间(至少几秒钟)时,并行化将真正显示出改进的性能。

    另见:

    搜索 [r] parallel 将产生至少 20 个与您类似的问题,包括有关您可以采取哪些措施来解决问题的更多详细信息。

    【讨论】:

      猜你喜欢
      • 2016-01-14
      • 1970-01-01
      • 2013-06-02
      • 2013-11-13
      • 1970-01-01
      • 2018-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多