1

我想优化以下代码。目前它在具有 2MB L2 缓存的 2Ghz 双核机器上运行大约 0.085 秒,因为 M 是 2404 x 100 数字矩阵:

Rescale <- function( M = utility.mat){
  exp.M <- exp(M) 
  result <- apply(exp.M, 1, function(x) x/sum(x))
  result <- t(result)
  return (result)
}

我尝试用apply()for 循环替换,它提供了大致相同的性能。还有其他想法吗?

4

1 回答 1

3

这在我的机器上似乎快了大约 6 倍:

Rescale1 <- function(M){
    M <- exp(M)
    result <- M / rowSums(M)
    return (result)
}

我想也许你可以通过打电话进一步加快速度,.Internal(rowSums())但没有成功。虽然这可能只是因为我没有正确使用它。

于 2012-05-10T00:41:54.660 回答