Optimizing code run time
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Deepa Maheshvare
il 5 Mag 2020
Modificato: per isakson
il 7 Mag 2020
Hi All,
I've the following function
function fun1()
[t,x] = ode15s(@(t,s) fun2(t,x), tspan , x0 ,options);
% other functions
end
function dx = fun2(t,x)
M = load(fullfile(path,'M.mat'));
:
:
dx = M*x
end
Each time fun2 is called, the same file is loaded and this increases the compute time
(calls: 52085 total time:156.848s, self time:59.780s). Of the total time taken (209s), 156s is taken for executing fun1 and 95% of the time is spent in loading the input file.
I'd like to ask for suggestions on how to get around this i.e reduce the time taken for loading/avoid loading for each function call.
0 Commenti
Risposta accettata
per isakson
il 5 Mag 2020
Try to replace
M = load(fullfile(path,'M.mat'));
by
persistent M
if isempty(M)
M = load(fullfile(path,'M.mat'));
end
and see persistent
7 Commenti
per isakson
il 5 Mag 2020
Modificato: per isakson
il 5 Mag 2020
MATLAB evaluates the expressions when loading the class. Therefore, the values MATLAB assigns to RN are the result of a single call to the rand function and do not change with subsequent references to NamedConst.RN.
Searching and reading the documentation is a large part of mastering Matlab.
Method 1.
I see no point in using the static method, get_H. It save on overhead to call load() directly in fun2.
Method 2.
Yes. (However, it's more convicing to test than listen to me.)
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Software Development Tools in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!