Why is large matrix subtraction making my code so slow?

Hello,
I have created a function which handles matrices roughly [10000 x 20000] in size. When I ran my function using the time & run profiler in MatLab, it is telling me that two lines of my code are taking 29s and 22s respectively:
These lines of code are basic matrix operations that shouldn't be computationally expensive to perform. They are equivalent to:
N = rand(10000,20000);
X = [zeros(10000,1) cumsum(N,2)];
M = X(:,5:end) - X(:,1:end-5);
When I run these lines of code in the command window, they only take a second or two at most.
Can anyone please tell me why MatLab is taking so long to calculate these lines inside a function? Thanks a mil!

3 Kommentare

the cyclist
the cyclist am 18 Sep. 2018
Bearbeitet: the cyclist am 18 Sep. 2018
Are you able to distill your code down to something that exhibits the problem, and post it here? For example, you could save the workspace as it exists just before this code is run (really, just the relevant variables) into a MAT file, and post the few lines of code that are taking longer than you expect.
You might find that through this distillation process, you actually discover what the issue is.
You may be executing those lines MANY times. So while ONE call there will be relatively fast, the total time for those lines is 20-30 seconds. The profile tool tells you the total time spent on those lines, not for ONE call.
If you are truly executing those lines ONLY once, then the odds are good that they are sufficiently large enough arrays that they are forcing MATLAB to farm memory out to disk, thus going into virtual memory.
Thanks guys, I think it was a virtual memory issue. When I cleared each variable straight after they were used, it quickened the performance time.
It still takes 20s-30s to perform the matrix subtraction, but overall the function is faster.

Melden Sie sich an, um zu kommentieren.

Antworten (0)

Kategorien

Mehr zu Operators and Elementary Operations finden Sie in Hilfe-Center und File Exchange

Gefragt:

am 18 Sep. 2018

Kommentiert:

am 27 Sep. 2018

Community Treasure Hunt

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

Start Hunting!

Translated by