Why does the same code run 50 times faster in 2008b than in 2012a?

Hi,
I'm runing a simple Monte Carlo loop, using the exact same code, in Matlab R2008b and it takes 29 seconds to do 30,000 iterations, while the same thing in Matlab R2012 a takes 26 minutes.
There is nothing fancy in the loop, I just generate a multivariate randome number and then do the monte carlo simulations (see code below). My code calls a function (psimat) that just reorganizes the data. I just can't understand the huge difference in performance, and it's not the PC, I'm running both on a server.
Any ideas?
Thank you,
Sebastian
for num = 1:monte; % 'monte' times of iterations
smpi_rnd = mvnrnd(smpi,kron(omega,iQ)/nobs); %Multivar. N random number
pi_rnd = reshape(smpi_rnd,K*p+dis*(q+1),K);
psi_rnd = psimat(p,q,K,dis,st,pi_rnd);
% Store mean responses
for i = 1:dis
for j = 1:st+1
mr_rnd(j+(i-1)*(st+1),num) = psi_rnd(K*j,i);
end;
end;
% Store cumulative effects
for i = 1:dis
ce(i,num) = sum(mr_rnd(1+(i-1)*(st+1):4+(i-1)*(st+1),num));
end;
end; % End of Monte Carlo loop

6 comentarios

Oleg Komarov
Oleg Komarov el 11 de Sept. de 2012
Editada: Oleg Komarov el 11 de Sept. de 2012
Profile the code and check if there is a bottleneck in the execution on the 2012a. For example, what is psimat()? And, are you sure you're using the same psimat()?
32bit v. 64bit MATLAB?
Is one a function and the other a script?
We've seen some reports of this having to do with 64 bit MATLAB on i5 and i7 processors. I seem to recall the reports were more about R2011b, but I would have to check that.
@Walter: Are there explanations of this effect, or even workarounds? If you do not know any, does TMW do?
Sebastian,
Would it be possible for you to provide a piece of code, with which we could try to reproduce your findings?

Iniciar sesión para comentar.

 Respuesta aceptada

Ryan G
Ryan G el 26 de Sept. de 2012
In general you should expect some minor slowdown between versions for the same code on the same machine with a new version of MATLAB. This is because of added features, maybe some error checking, who knows. However, 26 minutes is a huge slowdown that would be unexpected.. I would also suggest you utilize the MATLAB Profiler to determine where the slowdown occurs.
To speed this up from there you can use PARFOR. See examples below:

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Centro de ayuda y File Exchange.

Productos

Preguntada:

el 11 de Sept. de 2012

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by