Organise le dépôt et numérote les profils par étape

This commit is contained in:
rabot
2026-10-07 15:48:27 +02:00
parent 19ad9b7b33
commit 875af6fe9e
25 changed files with 211 additions and 65 deletions
+25 -11
View File
@@ -30,8 +30,10 @@ Le profil initial conduit aux priorités suivantes, classées par gain attendu :
## 3. Optimisations et gains mesurés
Chaque gain est relatif à la version précédente. Les deux premières étapes
reposent sur une mesure ponctuelle ; les suivantes utilisent la médiane de
cinq exécutions par version.
reposent sur une mesure ponctuelle ; les étapes 03 à 05 utilisent la médiane
de cinq exécutions par version, les étapes 06 et 07 celle de dix exécutions,
et la normalisation celle de cinquante exécutions. Chaque comparaison est
faite sur la même machine ; les conditions peuvent varier entre les étapes.
| Optimisation | Modification | Avant | Après | Temps gagné |
| --- | --- | ---: | ---: | ---: |
@@ -40,29 +42,41 @@ cinq exécutions par version.
| Table de hachage | Recherche et insertion en O(1) en moyenne | 0,888 s | 0,831 s | 6,4 % |
| Longueurs et chaînes | Champ `taille`, arrêt sur `\0`, position de fin conservée | 0,832 s | 0,362 s | 56,5 % |
| Tri par tas | Tri en O(n log n), sans tableau supplémentaire | 0,367 s | 0,113 s | 69,3 % |
| Bigrammes | Deux lettres précédentes conservées, aucun appel à `est_lettre` | 0,1252 s | 0,1123 s | 10,3 % |
| Mots vides | Filtre par longueur et index de hachage séparé | 0,1007 s | 0,0543 s | 46,1 % |
| Normalisation | Table de conversion des octets, comparaison sur le même PC | 0,0569 s | 0,0508 s | 10,7 % |
La version finale utilise le hachage à la place de la dichotomie. Son gain
Le programme utilise le hachage à la place de la dichotomie. Son gain
supplémentaire reste limité car la recherche était déjà efficace.
Tous les appels à `longueur` sont supprimés. Le tri ne fait plus que
**129 602 appels à `doit_echanger`**, soit environ **133 fois moins**.
Le classement reste par fréquence décroissante, puis par ordre alphabétique.
La recherche des mots vides passe de **12 045 671 à 202 444 appels à
`egales`**. Les appels à `est_lettre` et `en_minuscule` sont supprimés.
Le gain de normalisation a été confirmé sur `salle235-06` : la nouvelle
version est plus rapide dans les 50 paires de mesures, en temps réel et CPU.
## 4. Bilan et validation
Une comparaison directe des versions initiale et finale donne les médianes
suivantes, sur cinq exécutions par version dans les mêmes conditions :
Le bilan global ci-dessous a été mesuré après le tri par tas (étape 05),
sur cinq exécutions par version dans les mêmes conditions. Les gains des
étapes suivantes sont mesurés séparément dans le tableau précédent.
| Mesure | Version initiale | Version finale |
| Mesure | Version initiale | Après le tri par tas |
| --- | ---: | ---: |
| Temps réel | 2,81 s | 0,11 s |
| Pic mémoire résident (RSS) | 6 664 Kio | 6 668 Kio |
Le programme est environ **25,5 fois plus rapide**, soit **96,1 % de temps
en moins** sur ce jeu de données.
Après le tri par tas, le programme est environ **25,5 fois plus rapide**,
soit **96,1 % de temps en moins** sur ce jeu de données.
Le rapport et la sortie console sont identiques octet par octet.
L'empreinte reste **`1d53de903efd2b7c`**.
L'empreinte reste **`1d53de903efd2b7c`**.
Sources : [notes](notes.md), [profil initial](out/profil_avant.txt),
[profil final](out/profil_apres_tri.txt) et [mesures globales](out/mesures_bilan.csv).
Sources : [notes](docs/notes.md), [ordre des profils](resultats/README.md),
[profil initial](resultats/profils/00_initial.txt),
[profil actuel](resultats/profils/08_normalisation.txt),
[mesures du bilan après tri](resultats/mesures/mesures_bilan_tri.csv) et
[comparaison de normalisation](resultats/mesures/comparaison_normalisation_meme_pc.csv).