1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
| clc
clear all
u = 1;
for N = 10:10:100;
for n = 1:N
tmp = rand(500, 215);
seuillage_pondere{n} = tmp;
seuillage_pondere_Dut(:,:,n) = tmp;
end
whos seuillage_pondere seuillage_pondere_Dut
for k = 1:10
% Gooby
tic
superposition_seuillage = zeros(500, 215);
for i = 1:numel(seuillage_pondere)
superposition_seuillage = superposition_seuillage + seuillage_pondere{i};
end
t(k,1) = toc;
S{1} = superposition_seuillage;
clear superposition_seuillage
% Dombrai
tic
seuill = [seuillage_pondere{:}];
seuill = reshape(seuill,500,215,numel(seuillage_pondere));
superposition_seuillage = sum(seuill,3);
t(k,2) = toc;
S{2} = superposition_seuillage;
clear superposition_seuillage seuill
% VV33D
tic
superposition_seuillage = sum(reshape([seuillage_pondere{:}],500,215,numel(seuillage_pondere)),3);
t(k,3) = toc;
S{3} = superposition_seuillage;
clear superposition_seuillage
%Dut
tic
superposition_seuillage = sum(seuillage_pondere_Dut, 3);
t(k,4) = toc;
S{4} = superposition_seuillage;
clear superposition_seuillage
end
flag = all(S{1}(:)==S{2}(:)) && all(S{1}(:)==S{3}(:)) && all(S{1}(:)==S{4}(:));
if flag
T(u,:) = mean(t);
else
T(u,:) = NaN;
end
u = u+1;
clear seuillage_pondere seuillage_pondere_Dut
clear functions
end
figure
p = plot(10:10:100,T);
legend(p, {'Gooby (for)' 'Dombrai (cat+reshape)' 'VV33D (one-liner)', 'Dut (MxNxP)'}, ...
'location', 'northwest')
xlabel('Nombre de cellules [500,215]')
ylabel('Temps (s)') |
Partager