j'ai un tp ou pour mettre en évidence des pb de pagination mémoire et d'optimisation, je calcule la somme de tous les éléments d'un tableau a deux dimensions de deux manières : par colonne , puis par ligne, et je mesure leur temps d'exécution
M=N=2048
Code :
- int somme1(int tableau[N][M])
- {
- int i,j, somme;
- somme = 0;
- for (i=0; i < N; i++) {
- for (j=0; j < M; j++) {
- somme += tableau[i][j];
- }
- }
- return somme;
- }
- int somme2(int tableau[N][M])
- {
- int i,j, somme;
- somme = 0;
- for (j=0; j < M; j++) {
- for (i=0; i < N; i++) {
- somme += tableau[i][j];
- }
- }
- return somme;
- }
|
lorsque je passe en O3, les deux algos sont prèsques identiques
13:48 farib@alizee ~% gcc -O2 tp4.c -o o2 13:48 farib@alizee ~% gcc -O3 tp4.c -o o3 13:49 farib@alizee ~% ./o2
Le temps d'excécution de la fonction somme1 est 54097 microsecondes Le temps d'exécution de la fonction somme2 est 144731 microsecondes 13:49 farib@alizee ~% ./o3
Le temps d'excécution de la fonction somme1 est 41750 microsecondes Le temps d'exécution de la fonction somme2 est 38920 microsecondes
|
quelle est donc l'optimisation utilisée qui peut produire un tel résultat ?
Message édité par farib le 11-02-2004 à 14:06:52
---------------
Bitcoin, Magical Thinking, and Political Ideology