【发布时间】:2014-12-13 03:30:10
【问题描述】:
您好,我正在尝试并行使用 R 包,特别是 mclapply() 函数来使用我的 8 核系统生成 10000 列和 24 行的移动平均值(列的移动平均值,因此 24 个数据点正在被平滑,10000 次)。
但是,当我将标准 lapply 的性能速度与 mclapply 进行比较时,我发现速度并没有提高。有人可以解释为什么我看不到运行时间的差异吗?
> x = replicate(10000, rnorm(24))
> system.time({
+ tmpp = lapply(list(x), function(x) {
+ rollmean(x, 7)
+ })
+ })
user system elapsed
15.309 7.893 23.201
>
> detectCores()
[1] 8
>
> system.time({
+ tmpp = mclapply(list(x),mc.cores=8, function(x) {
+ rollmean(x, 7)
+ })
+ })
user system elapsed
15.628 7.948 23.573
【问题讨论】:
-
这可能是深奥的,你的函数风格是不确定的。
lapply(x,rollmean,k=7)更干净,而且可能更快。
标签: r parallel-processing