相关疑难解决方法(0)

为什么并行包慢于使用apply?

我试图确定何时使用该parallel程序包来加快运行某些分析所需的时间.我需要做的一件事是创建矩阵,比较具有不同行数的两个数据帧中的变量.我问了一个关于在StackOverflow上做有效方法的问题,并在我的博客上写了关于测试的文章.由于我对最佳方法感到满意,因此我希望通过并行运行来加快这一过程.以下结果基于带有8GB RAM的2ghz i7 Mac.令我感到惊讶的是,特别是功能parallelparSapply比使用该apply功能更糟糕.复制它的代码如下.请注意,我目前只使用我创建的两个列中的一个,但最终想要同时使用它们.

执行时间http://jason.bryer.org/images/ParalleVsApplyTiming.png

require(parallel)
require(ggplot2)
require(reshape2)
set.seed(2112)
results <- list()
sizes <- seq(1000, 30000, by=5000)
pb <- txtProgressBar(min=0, max=length(sizes), style=3)
for(cnt in 1:length(sizes)) {
    i <- sizes[cnt]
    df1 <- data.frame(row.names=1:i, 
                      var1=sample(c(TRUE,FALSE), i, replace=TRUE), 
                      var2=sample(1:10, i, replace=TRUE) )
    df2 <- data.frame(row.names=(i + 1):(i + i), 
                      var1=sample(c(TRUE,FALSE), i, replace=TRUE),
                      var2=sample(1:10, i, replace=TRUE))
    tm1 <- system.time({
        df6 <- sapply(df2$var1, FUN=function(x) { x == df1$var1 })
        dimnames(df6) <- …
Run Code Online (Sandbox Code Playgroud)

parallel-processing r

36
推荐指数
3
解决办法
1万
查看次数

标签 统计

parallel-processing ×1

r ×1