Files
2026_TD1_DEV51_Qualite_Algo/COMPTE_RENDU.md
T

2.4 KiB

Compte-rendu TD1 :

Nom Binome : Luka PLOUVIER et Jimmy COLOMB-RAVAT

##1 Mesurer

Empreinte du rapport : 1d53de903efd2b7c

real 0m2.638s user 0m2.613s sys 0m0.004s

##3 Analyser

#profil plat :

% cumulative self self total
time seconds seconds calls ms/call ms/call name
39.12 0.84 0.84 308701874 0.00 0.00 egales 32.41 1.54 0.70 36009819 0.00 0.00 longueur 12.04 1.80 0.26 150182 0.00 0.01 chercher_mot

La plupart du temps d'éxecution se passe par ces fonctions. En observant le code, on se rend compte qu'il est difficile d'optimiser les fonctions 'egales' et 'longueur'.

#Graphe d'appels

Dans 'ecart_type_longueur' on voit qu'elle appel 'longueur_moyenne' pour chaque mots unique alors que la moyenne est déjà calculer dans le 'main'.

             0.00    0.00       1/5867        main [1]
            0.07    0.67    5866/5867        ecart_type_longueur [7]

[6] 34.2 0.07 0.67 5867 longueur_moyenne [6] 0.67 0.00 34415822/36009819 longueur [8]

'longueur_moyenne' appel 34.4 millions de fois 'longueur' soit 95% des 36 millions d'appels pour 34.2% du temps total.

'chercher_mot' fait une rechercher linéaire pour chacune des 150 182 occurences. Comme la table grandit jusqu'à 5866 entrées, c'est un comptage de mots x mots_uniques soit 296,6 millions d'appels à 'égales' sur les 308,7 millions d'appels au total.

##4 Proposer

Faire une table de hachage pour le comptage des mots dans 'chercher_mot'. Calculer la moyenne une seule fois dans 'ecart_type_longueur'.

##5 Optimiser

39.12 0.84 0.84 308701874 0.00 0.00 egales 2.25 1.03 0.03 12195414 0.00 0.00 egales

On peut voir que le nombre d'appels de 'egales' a diminué de 200 millions.

real 0m1.867s user 0m1.829s sys 0m0.000s

Le temps d'éxecution a diminué de 0,8 secondes.

63.06 0.70 0.70 36009819 0.00 0.00 longueur 66.67 0.46 0.46 1605729 0.00 0.00 longueur

9.91 0.81 0.11 5867 0.02 0.13 longueur_moyenne 0.00 0.69 0.00 2 0.00 1.68 longueur_moyenne

On peut voir qu'on a diminué le nombre d'appels de 'longueur' de 35 millions d'appels environ en appelant que 1 seule fois 'longueur_moyenne' dans 'ecart_type_moyenne'.

real 0m1.205s user 0m1.167s sys 0m0.000s

On a encore diminué le temps d'éxecution de 0.8 secondes.