Commit Graph

8 Commits

Author SHA1 Message Date
Ryad Mehiri 9966c6feca Ne plus recalculer la longueur de la ligne dans normaliser_ligne
La condition de boucle appelait longueur(ligne) à chaque caractère : 1,56
million de parcours de lignes d'environ 71 caractères. On s'arrête sur le
'\0', ce qui revient au même puisque la normalisation ne raccourcit pas
la ligne.

Temps : 1,06 s → 0,53 s. Empreinte inchangée (1d53de903efd2b7c).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 14:00:39 +02:00
Ryad Mehiri cd34f39535 Construire le rapport en temps linéaire
ajouter() recalculait la longueur du rapport à chaque ligne : 5 867
parcours d'une chaîne qui grandit jusqu'à ~90 Ko (O(n²) en caractères).
On garde un pointeur sur la fin du rapport et on écrit directement à la
suite avec sprintf.

gprof n'attribuait que 0,04 s à construire_rapport, car il répartit le
temps de longueur() au prorata du nombre d'appels : la mesure montre que
c'était en réalité le premier poste restant.

Temps : 2,0 s → 1,06 s. Empreinte inchangée (1d53de903efd2b7c).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 14:00:02 +02:00
Ryad Mehiri 255a73982c Indexer les mots par une table de hachage dans compter_mot
chercher_mot parcourait toute la table pour chaque mot : 296,7 millions
d'appels à egales pour 150 182 mots. Une table de hachage à adressage
ouvert (hachage FNV-1a, la fonction empreinte déjà présente) donne une
recherche en temps constant en moyenne. L'ordre d'insertion dans la table
est conservé.

Temps : 5,6 s → 2,0 s. Empreinte inchangée (1d53de903efd2b7c).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 13:59:34 +02:00
Ryad Mehiri 330254a918 Calculer la moyenne une seule fois dans ecart_type_longueur
longueur_moyenne était rappelée à chaque tour de boucle : n appels qui
parcourent chacun toute la table, soit 34,4 millions d'appels à longueur
pour 5 866 mots (O(n²) → O(n)).

Temps : 7,6 s → 5,6 s. Empreinte inchangée (1d53de903efd2b7c).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 13:58:49 +02:00
Ryad Mehiri 00612ff797 Profil initial (gprof) de l'analyseur avant optimisation
Version d'origine compilée en -O0 -g -pg : 7,6 s sans -pg (médiane de 5
exécutions), empreinte 1d53de903efd2b7c.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 13:57:23 +02:00
Maxime Menault 6165b37b51 Cours 2026-10-07 08:53:55 +02:00
Maxime Menault 0a0c3a518f Exemple du cours 2026-10-07 00:07:20 +02:00
Maxime Menault 6c6f358095 Analyseur.c 2026-10-06 23:40:17 +02:00