adding breakpoint to program slows it down a factor of 250x

17 Ansichten (letzte 30 Tage)
gkk gkk
gkk gkk am 18 Dez. 2012
I observed this in a larger program, then created a simple test case to ask this question.
The following program takes 0.038 seconds to execute without any breakpoints.
tic;
for ii=1:16000000
xyz=1;
end
toc;
z=1;
But if I set a breakpoint at the line of code for z=1, it takes 9.3 seconds to execute.
Is this normal? Is my system corrupted somehow? Any feedback much appreciated.
Rebooting the computer doesn't make a difference. I have 32G of RAM available so that shouldn't be the problem. Not sure what other knobs are available to try to get better performance.

Akzeptierte Antwort

Matt Fig
Matt Fig am 18 Dez. 2012
It makes sense to me that MATLAB would be slower when you are debugging. So what is the big deal? You won't be in debug mode once the program is ready for use, will you?
  9 Kommentare
Matt Fig
Matt Fig am 18 Dez. 2012
Bearbeitet: Matt Fig am 18 Dez. 2012
I did. Without, .037 seconds. With a break point on the last line, 4.43 seconds. Like this:
function [r] = check_debug()
% Run in normal and with breakpoint on r=1. Observe time difference.
tic;
for ii=1:16000000
xyz=1;
end
toc;
try
error('Here I am on line 10')
catch
end
r=1;
I run from the command line and get the following output. As you can see, the code is fast this way and I can still step through.
>> dbstop if caught error
>> check_debug
Elapsed time is 0.037994 seconds.
Caught-error breakpoint was hit in check_debug at line 10. The error was:
Error using check_debug (line 10)
Here I am on line 10
10 error('Here I am on line 10')
K>> whos
Name Size Bytes Class Attributes
ii 1x1 8 double
xyz 1x1 8 double
K>> dbstep
14 r=1;
K>> dbstep
End of function check_debug.
K>> dbcont
ans =
1
gkk gkk
gkk gkk am 18 Dez. 2012
Thanks so much Matt, that really helps.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Teja Muppirala
Teja Muppirala am 18 Dez. 2012
Might I suggest using the KEYBOARD command? It's a bit simpler than setting up dbstops and trys and catches, and works just as fast.
tic;
for ii=1:16000000
xyz=1;
end
toc;
keyboard;
z=1;
  2 Kommentare
Matt Fig
Matt Fig am 18 Dez. 2012
Bearbeitet: Matt Fig am 18 Dez. 2012
Indeed!
gkk gkk
gkk gkk am 18 Dez. 2012
Great! And there's no hit from performance using keyboard.

Melden Sie sich an, um zu kommentieren.

Kategorien

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

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by