je vous propose une question qui devrait vous faire aimer la fonction RESHAPE de MATLAB
Pour permettre à tous le monde de participer, soumettez-moi vos réponses par MP, je donnerai dans cette discussion la liste des membres ayant la bonne réponse.
---------------------------------------------------
Soit le programme suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| clc
clear all
for n = 500:500:8000
clear X
X = rand(n);
tic
X = reshape(X,1,[]);
t = toc;
fprintf('Taille de X: %5d x%5d (%5.1f Mo) : %.7f s\n',n,n,n*n*8/1024/1024,t);
end |
Le code ne fait que générer des tableaux aléatoires de dimension nxn de plus en plus gros puis les redimensionne en tableau 1x(nxn) avec RESHAPE.
La ligne avec FPRINTF affiche à chaque itération les dimensions du tableau, sa taille approximative en Mo et le temps d'exécution du redimensionnement en secondes.
Voici ce que j'obtiens sur ma machine :
Taille de X: 500 x 500 ( 1.9 Mo) : 0.0003590 s
Taille de X: 1000 x 1000 ( 7.6 Mo) : 0.0000450 s
Taille de X: 1500 x 1500 ( 17.2 Mo) : 0.0000450 s
Taille de X: 2000 x 2000 ( 30.5 Mo) : 0.0000410 s
Taille de X: 2500 x 2500 ( 47.7 Mo) : 0.0000440 s
Taille de X: 3000 x 3000 ( 68.7 Mo) : 0.0000420 s
Taille de X: 3500 x 3500 ( 93.5 Mo) : 0.0000440 s
Taille de X: 4000 x 4000 (122.1 Mo) : 0.0000450 s
Taille de X: 4500 x 4500 (154.5 Mo) : 0.0000430 s
Taille de X: 5000 x 5000 (190.7 Mo) : 0.0000440 s
Taille de X: 5500 x 5500 (230.8 Mo) : 0.0000710 s
Taille de X: 6000 x 6000 (274.7 Mo) : 0.0000430 s
Taille de X: 6500 x 6500 (322.3 Mo) : 0.0000440 s
Taille de X: 7000 x 7000 (373.8 Mo) : 0.0000430 s
Taille de X: 7500 x 7500 (429.2 Mo) : 0.0000430 s
Taille de X: 8000 x 8000 (488.3 Mo) : 0.0000430 s
Si on exclu la première itération, on remarque que la durée du redimensionnement est constante (les valeurs sont très faibles, moins d'1 milliseconde) quelque soit la taille du tableau.
Il faut aussi peu de temps pour redimensionner le tableau de 8Mo que celui de 500Mo
Cela peut sembler surprenant sachant qu'il y a 1 000 000 éléments dans le premier et qu'il y en a 64 fois plus dans le second (64 000 000 éléments)
Comment cela est-il possible ?
A vos neurones et à vos claviers !
Partager