我想优化以下代码。目前,它在2Ghz双核机器上运行大约0.085秒,具有2MB L2缓存,因为M是2404乘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)
}
我尝试用for循环替换apply()
,这提供了相同的性能。还有其他想法吗?
答案 0 :(得分:3)
这似乎比我的机器快了6倍:
Rescale1 <- function(M){
M <- exp(M)
result <- M / rowSums(M)
return (result)
}
我想也许你可以通过致电.Internal(rowSums())
来加快速度,但它没有成功。虽然这可能只是因为我没有正确使用它。