microbenchmark以什么步骤执行给定的代码?

时间:2016-10-08 02:30:34

标签: r microbenchmark

这就是我想要做的。我有两种不同的矩阵乘法方法。所以我想找到哪种方式更好。我使用了microbenchmark包,我调用了每个函数来检查它们的执行时间。由于我的矩阵太大,我想得到答案矩阵,然后删除它,并清除垃圾。所以我写了下面的代码。通过这样做100次,我想找到哪种方法可以更快地创建答案矩阵。

set.seed(100)    
library(microbenchmark)
library(parallel)
cl <- makeCluster(4)

matrix.multiply.method1 <- function(cl, A, B){
  ans <- clusterApply(cl, lapply(splitIndices(nrow(A), length(cl)), function(ii) A[ii,,drop=FALSE]), get("%*%"), B)
  do.call(rbind, ans)
}

matrix.multiply.method2 <- function(A,B){
  return (A%*%B)
}

nr <- 5000
A <- matrix(round(rnorm(nr^2),1),nr=nr)
B <- matrix(round(runif(nr^2),1),nr=nr)

timing <- microbenchmark(
    x <- matrix.multiply.method1(A,B),
    remove (x),
    gc(),
    y <- matrix.multiply.method2(A,B),
    remove(y),
    gc()
)

stopCluster(cl)
timing

我想知道microbenchmark如何执行这些步骤100次? microbenchmark执行一行100次,然后转到第二行吗?或者它是否一次又一次地执行所有行第100次?

我想知道,因为当我运行此代码时,它会给我一个警告,说它无法删除对象'x'和'y'。所以我认为microbenchmark执行代码的方式就是这个原因。

0 个答案:

没有答案