Dear Mauro:

Thanks for the advice.  I did not declare const nvar=6 , but will and let 
you know the result.

Yes, I have read the performance section of the manual.  Part of the 
problem is I still think in MatLab coding rules.  

Jim Nason

On Wednesday, June 17, 2015 at 3:00:03 AM UTC-4, Mauro wrote:
>
>
> > The (global) constants are nvar = 6, number of variables (Int64) and 
> plags 
> > = 6, number of lags in the vector autoregression (Int64), which are 
> defined 
> > previously in the programs. 
>
> did you actually declare those const: 
>
> const nvar=6 
>
> ? 
>
> If not, this will impact your loop. 
>
> > function bb_update(bbj, bbcovj) 
> > 
> >      for j = 1:obs 
> >          bbcovj += capZ[(j-1)*nvar+1:j*nvar,:]'*( 
> > inv(Om_e[(j-1)*nvar+1:j*nvar,:]) )*capZ[(j-1)*nvar+1:j*nvar,:] ; 
> >          bbj += capZ[(j-1)*nvar+1:j*nvar,:]'*( 
> > inv(Om_e[(j-1)*nvar+1:j*nvar,:]) )*yyy[:,j] ; 
> >      end 
> > 
> >      return (bbj, bbcovj) 
> > end 
>
> Any object you do not pass in as argument needs to be const, thus maybe 
> pass them as arguments instead: 
>
> function bb_update(bbj, bbcovj, yyy, Om_e, capZ) 
>     for j = 1:size(yyy,2) 
>         jj = (j-1)*nvar+1:j*nvar 
>         bbcovj += capZ[jj,:]'*(inv(Om_e[jj,:]) )*capZ[jj,:] 
>         bbj += capZ[jj,:]'*(inv(Om_e[jj,:]) )*yyy[:,j] 
>     end 
>     return (bbj, bbcovj) 
> end 
>
> Also, note, Julia is fastest with unrolled loops as at the moment Julia 
> makes a copy when doing slices (this will change sometime).  However, as 
> you're doing an matrix inverse, that trick is not applicable here. 
>
> Have you seen the performance section in the manual? 
>

Reply via email to