Ηow to properly measure the execution time of a piece of code
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
I've created a function to calculate it eigenvector centrality with its use power method. I used the variable num_of_terms that determines the count of the calculations.
adj = [ 0 1 0 0 0 0 0 0 0 0 ;
1 0 1 1 0 1 0 0 0 0 ;
0 1 0 1 0 0 0 0 0 0 ;
0 1 1 0 0 0 1 0 0 0 ;
0 0 0 0 0 1 0 0 0 0 ;
0 1 0 0 1 0 1 1 0 1 ;
0 0 0 1 0 1 0 0 1 0 ;
0 0 0 0 0 1 0 0 0 0 ;
0 0 0 0 0 0 1 0 0 1 ;
0 0 0 0 0 1 0 0 1 0 ;
];
x0 = ones(1,10);
time_Exe2 = zeros(1,10);
for i = 1 : 10
[~,time_Exe2(i)] = cul_eigvector_sentrality_Power_Method(adj,x0,i);
end
function [eigvector_centrality , time_exe] = cul_eigvector_sentrality_Power_Method(adj,x0,num_of_terms)
clear tic time_exe Xn
%time = hat();
tic;
Xn = x0 * adj;
for i = 1 : num_of_terms -1
Xn = Xn * adj;
end
Xn = Xn/norm(Xn);
time_exe = toc;
%time_exe = hat() - time ;
eigvector_centrality = Xn;
end
The results for the execution time are as follows:
# Time_execuson
0.000228
0.000113
0.000199
0.000373
0.000767
0.000032
0.000070
0.000041
0.000037
Logically as the variable num_of_terms increases, the calculations also increase.
Why the execution time is not decreasing but decreasing?
Someone knows how to solve this problem?
Thank you.
0 Commenti
Risposte (2)
Philip Borghesani
il 11 Gen 2019
Modificato: Philip Borghesani
il 11 Gen 2019
Matlab's JIT compiler performs different optimizations for code that runs multiple times and it may take many runs of a block of code before it is fully optimized. So even though later loops are doing more work they are better optimized . If you use a larger num_of_terms or repeate the experiment multiple times you should see your expected performance pattern.
Why is this a problem?
Adam
il 11 Gen 2019
doc timeit
is the best way to get simple timings from a piece of cide. It deals with running multiple times and averaging as well as eliminating the first time call overhead and other things like that.
When code is so fast though you should not expect the results to be very predictable in terms of how fast it is with respect to the inputs. It's just too fast to be that accurate.
0 Commenti
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!