How to make function perform faster?

前端 未结 2 1302
一向
一向 2021-01-15 19:39

I have following function: http://i.stack.imgur.com/yXA67.png, where mu is matrix (n_X rows and n_Y columns). d_X and d_Y are distance matrices.

One way to

2条回答
  •  轮回少年
    2021-01-15 20:34

    This will save you 2 name look ups and a function call (i.e. [) per loop, which is a wopping 8% faster (so really @Marat Talipov's suggestion is the way to go) :

    H_mu_2 <- function(mu, d_X, d_Y){
        value <- 0
        for(i in 1:nrow(d_X))
        for(j in 1:nrow(d_Y)){
            tmp <- mu[i,j]
            for(ii in 1:nrow(d_X))
            for(jj in 1:nrow(d_Y)){
                value <- value + tmp*mu[ii,jj]*abs(d_X[i,ii]-d_Y[j,jj])
            }} 
    }
    

提交回复
热议问题