On Wednesday, July 9, 2014 1:59:46 PM UTC-4, Steve Bellan wrote: > > Hi Josh, thanks for the response. I've managed to get a working version up > with an Array. Its about twice as fast as R and I'm wondering if there are > still ways I can speed it up. Here's the Julia version: > > > (s__, mb_a1, mb_a2, mb_, f_ba1, f_ba2, f_b, hb1b2, hb2b1) = 1:9 > function pre_coupleMat(serostates, sexually_active) > temp = serostates[sexually_active,:] > serostates[sexually_active,s__] = temp[:,s__] .* (1-p_m_bef) .* (1- > p_f_bef) >
This will be way faster if you just write out a loop to update the serostates array. The problem with your current code is that it allocates zillions of little temporary arrays, which is always a slow thing to do in a performance-critical function. Not only do you have temp, but every .* operation allocates a temporary array for its result. That will make the code longer and a bit uglier, unfortunately, but basically you need C-like inner-loop code for C-like performance.
