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 に答える