J'ai écrit une petite boucle dans matlab pour générer une matrice aléatoire NxN. La boucle est
tic
for i=1:10000
u=rand(1,10000);
tau(i,:)=d.*(u(1,:)-0.5);
end
toc
J'ai d'abord essayé la routine de la boucle une seule fois,
u=rand(1,10000);
tau=d.*(u(1,:)-0.5);
ce qui m'a donné tau en 0,000169 seconde. J'ai supposé que la boucle prendrait alors environ 1,69s. Ce n'est pas le cas, il a fallu 555,018280 secondes avec les ventilateurs qui s'affolent.
Y a-t-il
a) une raison pour laquelle la vitesse n'est pas linéairement liée au nombre d'itérations ?
b) une raison pour laquelle il faut donc beaucoup plus de temps pour faire la routine plusieurs fois
c) un moyen d'accélérer ce processus (j'aimerais en fait générer des matrices plus grandes), par exemple une meilleure boucle ou un moyen de me donner, disons, une matrice 1'000'000x1'000'000 du même type ?