forked from menault/2026_TD1_DEV51_Qualite_Algo
1.4 KiB
1.4 KiB
Compte rendu — TD Profiling
Temps
| Temps | Empreinte | |
|---|---|---|
| Avant | 2,905 s | 1d53de903efd2b7c |
| Après optimisation 1 | 2,048 s | 1d53de903efd2b7c |
| Après optimisation 2 | 1.976 s | 1d53de903efd2b7c |
Analyse du profil
chercher_motprend 54 % du temps. Elle fait une recherche linéaire et appelleegales296 millions de fois.ecart_type_longueurprend 29 % du temps. Elle recalcule la moyenne à chaque tour de boucle.
Pistes (par gain attendu)
chercher_mot: vérifier la première lettre avant d'appeleregales.ecart_type_longueur: calculer la moyenne une seule fois.
Optimisation 1 : chercher_mot
if (table[i].mot[0] == mot[0] && egales(table[i].mot, mot))
On compare d'abord la première lettre. Si elle diffère, && n'appelle pas egales.
- Appels à
egalesdepuischercher_mot: 296 M → 23 M (÷ 13) - Temps total du profil : 2,22 s → 1,87 s (−16 %)
La boucle parcourt toujours toute la table : la complexité ne change pas, seul le nombre d'appels baisse.
Optimisation 2 : ecart_type_longueur
double moyenne = longueur_moyenne(table, n); // avant la boucle
for (int i = 0; i < n; i++) {
double ecart = longueur(table[i].mot) - moyenne;
- Appels à
longueur_moyenne: 5 867 → 2 - Appels à
longueur: 36 M → 1,6 M - Temps total du profil : 1,87 s → 1,50 s (−20 %)
Bilan
Temps total du profil : 2,22 s → 1,50 s (−32 %).