Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux McLappy的不当使用案例?_Linux_R_Lapply_Mclapply - Fatal编程技术网

Linux McLappy的不当使用案例?

Linux McLappy的不当使用案例?,linux,r,lapply,mclapply,Linux,R,Lapply,Mclapply,我一直在一台安装了LinuxMint(debian)的旧笔记本电脑上玩rstudio服务器 我一直在windows上运行,因此我从未利用过并行或多核软件包,我的目标是学习rstudio服务器以及R linux,以及多核处理如何加速我的进程 我每天使用的lapply的一个主要用途如下: f <- function(x) { x1 <- data[1:50, x] x2 <- data[51:100, x] line <- c(paste0(mean(x1

我一直在一台安装了LinuxMint(debian)的旧笔记本电脑上玩rstudio服务器

我一直在windows上运行,因此我从未利用过
并行
多核
软件包,我的目标是学习
rstudio服务器
以及
R linux
,以及多核处理如何加速我的进程

我每天使用的lapply的一个主要用途如下:

f <- function(x) {
   x1 <- data[1:50, x]
   x2 <- data[51:100, x]

   line <- c(paste0(mean(x1), " (", sd(x1), ")"),
             paste0(mean(x2), " (", sd(x2), ")"),
             t.test(x1, x2)$p.value)
   return(line)
 }

data <- data.frame(matrix(rnorm(2600, 85, 19), nrow=100, ncol=26))
names(data) <- letters

do.call(rbind, lapply(letters, f))

 microbenchmark(
     do.call(rbind, lapply(letters, f))
 )
中值时间为
120.9
毫秒

为什么会有如此巨大的差异

这台机器是一个2核恐龙。是不是在使用>=4核机器之前,您看不到好处?我的用例(按列计算data.frame)是否不适合看到好处


谢谢大家!

您的数据太小,因此在开销方面具有优势,请尝试

f <- function(x) {
  x1 <- data[1:50000, x]
  x2 <- data[50001:100000, x]

  line <- c(paste0(mean(x1), " (", sd(x1), ")"),
            paste0(mean(x2), " (", sd(x2), ")"),
            t.test(x1, x2)$p.value)
  return(line)
}

data <- data.frame(matrix(rnorm(2600, 85, 19), nrow=100000, ncol=26))

f我刚刚在我的双核处理器上尝试了这个。这个间隔缩短了约0.4毫秒,所以与您收到的更改没有什么相似之处,但至少是在正确的方向上。我决定以两种方式对系统施加压力,同时将要计算的变量数量增加一倍(最多52个),在这一点上,我最终发现McLappy的平均计算时间更快。谢谢
f <- function(x) {
  x1 <- data[1:50000, x]
  x2 <- data[50001:100000, x]

  line <- c(paste0(mean(x1), " (", sd(x1), ")"),
            paste0(mean(x2), " (", sd(x2), ")"),
            t.test(x1, x2)$p.value)
  return(line)
}

data <- data.frame(matrix(rnorm(2600, 85, 19), nrow=100000, ncol=26))