同一函数的处理时间不同

时间:2018-05-01 10:20:08

标签: for-loop image-processing matrix time raster

我使用for循环创建一个新的矩阵,其基于在旧矩阵中组合25x25个单元格的平均值/最大值/最小值。但是,此代码需要不同的时间才能在相同的单独矩阵上运行。

我有2个叫做A和B的栅格(相同的分辨率和范围): A(2317392元素,18.3Mb) B(2317392元素,17.7Mb)

转换为矩阵: 马(2317392元素,17.7Mb) Mb(2317392元素,17.7Mb)

运行代码:

maxm <- matrix(nrow=nrow(Ma)/25, ncol=ncol(Ma)/25)
for(i in 1:dim(maxm)[1] {
   for(j in 1:dim(maxm)[2] {
      row <- 25 * (i-1) + 1
      col <- 25 * (j-1) + 1
   maxm[i,j] <- max(A[row:(row + 24), col:(col + 24)])
   }
}

对于'Ma',它以13.25秒的速度运行

在矩阵'Mb'上运行的相同代码需要13.2秒。 这就像我预期的那样。

-----------

然而, 如果我更改范围以覆盖光栅的更大区域并运行相同的代码。

这一次,Ma2(41320312元素,315.2Mb)和Mb2(41320312元素,315.2Mb)

在Ma2上运行的代码需要245.84秒

然而,在Mb2上运行的代码运行了几天......

我已经考虑过删除NA值,例如:

maxm[i,j] <- max(A[row:(row + 24), col:(col + 24)], na.rm=TRUE)

我无法理解为什么在同一个进程上运行会慢得多。任何想法/想法将不胜感激!

0 个答案:

没有答案