Execution times and the "pause" function

I have a question about a strange phenomenon I have been noticing for some time whilst working with Matlab and which has now become somewhat acute.
When I run scripts which are relatively demanding on my computer, pausing and immediately unpausing the execution weirdly appears to speed up the execution of the rest of the script.
The current example is this:
I am running a simulation model, which is essentially just one big loop representing simulation periods . Within this loop there is another loop which is entered only under a certain condition. If this second loop is entered in some simulation period t, the simualtion of this particular period naturally takes longer than that of the other ones as more operations are executed.
Essentially the programm looks like this:
for t=1:T
do stuff
if condition holds
for tt=1:TT
do more stuff
end
end
end
The problem I have is the following: After the second, inner loop is entered, all following simulation periods take longer to execute, even when the condition does not hold. I have gone into debug mode and can 100% confirm that the second loop is not entered in other simulation periods. Nevertheless those periods take longer to execute after the second loop has been entered once in a previous period.
Additionally, if i pause the execution of the script manually after the second loop has been entered and exited again and then continue, the script speeds back up and the rest of the periods are simulated at the usual speed. More generally, I often find that if a script runs slowly I can speed it up significantly by pausing and unpausing.
Does anyone know what might be causing this?
PS: After some additonal experimentation it seems that this phenomenon only occurs if I click the pause button in the GUI, i.e. if I enter debug mode and then pess continue. Simply inserting pause(n) under some condition into the script does not cause this change in execution speeds.

5 Kommentare

Rik
Rik am 15 Jun. 2020
Does this behavior also occur if you run your code a second time? (this is a pure guess that it may relate to JIT optimization somehow)
Severin Reissl
Severin Reissl am 15 Jun. 2020
Yes, this occurs every time I run the code.
Cole
Cole am 28 Jan. 2025
I have seen identical behavior in my code. 2024b is particularly bad with this phenomena in our simulation yielding 2-3x performance boost just from clicking pause in the gui and then play again. 2022a doesn't seem to exhibit this problem, at least not on the scale that 2024b does.
I too believe this is a JIT issue. For us I think it has to do with the eval function as we use it heavily for some of our calculations and pausing and unpausing likely allows the JIT to handle those eval statements that are created during run time rather than at the beginning. However, I'm totally lost on why 2024b would be worse than 2022a. And 2024b only outperforms 2022a in our code by 1-2% after the pause button is clicked. So 2024b without clicking pause and unpause is 2-3x worse than 2022a for identical code.
Mike Croucher
Mike Croucher am 30 Jan. 2025
This sounds very strange...and must be frustrating for you! Would it be possible for you to be able to send me a script that exhibits this behaviour for you so I can reproduce it and get it reported to development please?
Mike Croucher
Mike Croucher am 30 Jan. 2025
Also, does this happen with the normal desktop in R2024b or the new Desktop beta?

Melden Sie sich an, um zu kommentieren.

Antworten (0)

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Hilfe-Center und File Exchange

Produkte

Version

R2019b

Gefragt:

am 15 Jun. 2020

Kommentiert:

am 30 Jan. 2025

Community Treasure Hunt

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

Start Hunting!

Translated by