forked from menault/2026_TD1_DEV51_Qualite_Algo
Increase maximum text word count and optimize line splitting function
This commit is contained in:
+54
-7
@@ -9,6 +9,9 @@
|
||||
Réduire le temps d'exécution sans modifier les résultats, sur un texte fixe
|
||||
contenant 250 000 mots et 5 866 mots distincts retenus.
|
||||
|
||||
Les sections 2 à 4 présentent ce corpus historique. La section 5 compare
|
||||
le découpage sur 10 000 000 mots, volume désormais utilisé par défaut.
|
||||
|
||||
Les temps sont mesurés avec `gcc -O0`, sans `-pg`. Le profil est obtenu
|
||||
séparément avec `gcc -O0 -pg` et `gprof`, car l'instrumentation ralentit le programme.
|
||||
|
||||
@@ -32,8 +35,9 @@ Le profil initial conduit aux priorités suivantes, classées par gain attendu :
|
||||
Chaque gain est relatif à la version précédente. Les deux premières étapes
|
||||
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.
|
||||
et les étapes de normalisation et de découpage 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é |
|
||||
| --- | --- | ---: | ---: | ---: |
|
||||
@@ -45,6 +49,7 @@ faite sur la même machine ; les conditions peuvent varier entre les étapes.
|
||||
| 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 % |
|
||||
| Découpage | Pointeurs dans le texte, sans allocation ni copie par ligne | 0,0844 s | 0,0796 s | 5,6 % |
|
||||
|
||||
Le programme utilise le hachage à la place de la dichotomie. Son gain
|
||||
supplémentaire reste limité car la recherche était déjà efficace.
|
||||
@@ -58,6 +63,13 @@ La recherche des mots vides passe de **12 045 671 à 202 444 appels à
|
||||
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.
|
||||
|
||||
Le découpage évite **21 746 allocations et libérations de lignes** ainsi
|
||||
que **1 561 330 octets de stockage**, sans changer les lignes retournées.
|
||||
Sur les 50 paires de mesures, le gain médian est de **5,6 % en temps réel**
|
||||
et **9,8 % en temps CPU**. Le pic mémoire résident médian, mesuré séparément
|
||||
cinq fois par version, passe de **6 688 à 4 896 Kio**. Les lignes partagent
|
||||
le tampon `texte`, qui est conservé jusqu'à la fin de leur utilisation.
|
||||
|
||||
## 4. Bilan et validation
|
||||
|
||||
Le bilan global ci-dessous a été mesuré après le tri par tas (étape 05),
|
||||
@@ -72,11 +84,46 @@ sur cinq exécutions par version dans les mêmes conditions. Les gains des
|
||||
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`**.
|
||||
Sur le corpus de 250 000 mots, le rapport et la sortie console sont
|
||||
identiques octet par octet. L'empreinte reste **`1d53de903efd2b7c`**.
|
||||
|
||||
Pour le découpage, `make check`, `make profile` et les tests sous
|
||||
AddressSanitizer et UndefinedBehaviorSanitizer passent. Les cas vérifiés
|
||||
incluent les lignes vides, les textes sans saut de ligne final et les
|
||||
agrandissements du tableau de pointeurs.
|
||||
|
||||
## 5. Comparaison sur 10 millions de mots
|
||||
|
||||
`NB_MOTS_TEXTE` est porté à **10 000 000 dans les deux versions comparées**.
|
||||
Sur le même CPU de `salle235-06`, deux mesures sans `-pg` sont effectuées
|
||||
par version, en inversant l'ordre avant/après à la seconde paire. Un profil
|
||||
est ensuite produit pour chaque version.
|
||||
|
||||
| Mesure | Avant découpage en place | Après découpage en place |
|
||||
| --- | ---: | ---: |
|
||||
| Temps réel moyen sans profiling | 2,0175 s | 1,7664 s |
|
||||
| Temps CPU moyen sans profiling | 1,95 s | 1,72 s |
|
||||
| Moyenne des pics RSS sans profiling | 145 780 Kio | 72 054 Kio |
|
||||
| Temps propre de `decouper_lignes` dans le profil | 0,28 s | 0,12 s |
|
||||
|
||||
Sur ces deux mesures, le gain est de **12,4 % en temps réel**, **11,8 % en
|
||||
temps CPU** et **50,6 % sur le pic RSS moyen**. Les profils contiennent
|
||||
environ 165 et 157 échantillons attribués, contre seulement 3 et 7 dans
|
||||
les anciennes captures comparées. Ils indiquent aussi une réduction du
|
||||
temps du découpage ; les mesures sans `-pg` confirment le gain global.
|
||||
|
||||
Le nouveau texte contient **869 827 lignes** et **6 098 mots distincts**.
|
||||
Le rapport et la sortie console sont identiques avant/après sur les six
|
||||
exécutions. L'empreinte de ce volume est **`b35be1258a9cb3f6`**.
|
||||
La référence historique à 250 000 mots est conservée séparément ;
|
||||
`make check` utilise désormais la référence à 10 millions de mots.
|
||||
|
||||
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).
|
||||
[profil après découpage à 250 000 mots](resultats/profils/09_decoupage.txt),
|
||||
[mesures du bilan après tri](resultats/mesures/mesures_bilan_tri.csv),
|
||||
[comparaison de normalisation](resultats/mesures/comparaison_normalisation_meme_pc.csv) et
|
||||
[comparaison du découpage](resultats/mesures/comparaison_decoupage_meme_pc.csv),
|
||||
[profils avant](resultats/profils/10000000_mots/avant_decoupage.txt) et
|
||||
[après à 10 millions](resultats/profils/10000000_mots/apres_decoupage.txt),
|
||||
[mesures à 10 millions](resultats/mesures/comparaison_decoupage_10000000.csv).
|
||||
|
||||
@@ -4,6 +4,7 @@ CFLAGS ?= -std=c11 -Wall -Wextra -Wpedantic -O0
|
||||
SOURCE = src/analyseur.c
|
||||
PROGRAMME = build/analyseur
|
||||
PROGRAMME_PROFIL = build/profil/analyseur
|
||||
REFERENCE = resultats/rapport_reference_10000000.txt
|
||||
|
||||
.PHONY: all run check profile clean
|
||||
|
||||
@@ -17,7 +18,7 @@ run: $(PROGRAMME)
|
||||
cd build && ./analyseur
|
||||
|
||||
check: run
|
||||
cmp resultats/rapport_reference.txt build/rapport.txt
|
||||
cmp $(REFERENCE) build/rapport.txt
|
||||
|
||||
$(PROGRAMME_PROFIL): $(SOURCE) Makefile
|
||||
mkdir -p $(@D)
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
# Analyseur de fréquence de mots — TD R5.A.04
|
||||
|
||||
Optimisation d'un analyseur C par mesure du temps, étude des profils et
|
||||
réduction du travail répété. Le rapport doit conserver l'empreinte
|
||||
**`1d53de903efd2b7c`**.
|
||||
réduction du travail répété. Le programme traite désormais **10 000 000 mots**,
|
||||
avec l'empreinte de référence **`b35be1258a9cb3f6`**.
|
||||
|
||||
Les résultats historiques sur **250 000 mots** conservent leur référence
|
||||
**`1d53de903efd2b7c`**. L'empreinte se compare à volume de texte identique.
|
||||
|
||||
## Organisation
|
||||
|
||||
@@ -12,9 +15,11 @@ exemples/exemple.c Exemple de profiling fourni
|
||||
docs/CONSIGNES.md Consignes originales du TD
|
||||
docs/R5A04_Profiling_MM.pdf Support du cours
|
||||
docs/notes.md Journal détaillé des mesures
|
||||
resultats/profils/ Profils historiques numérotés de 00 à 08
|
||||
resultats/profils/ Profils historiques de 00 à 09 (250 000 mots)
|
||||
resultats/profils/10000000_mots/ Comparaison avant/après sur 10 millions de mots
|
||||
resultats/mesures/ Mesures brutes CSV et conditions des expériences
|
||||
resultats/rapport_reference.txt Rapport attendu
|
||||
resultats/rapport_reference.txt Référence historique (250 000 mots)
|
||||
resultats/rapport_reference_10000000.txt Référence actuelle (10 millions)
|
||||
COMPTE_RENDU.md Compte rendu noté
|
||||
build/ Fichiers générés localement, ignorés par Git
|
||||
```
|
||||
@@ -27,7 +32,7 @@ Depuis la racine du dépôt :
|
||||
```bash
|
||||
make # Compiler en -O0, sans instrumentation
|
||||
make run # Exécuter ; le rapport est écrit dans build/rapport.txt
|
||||
make check # Exécuter et comparer le rapport à la référence
|
||||
make check # Exécuter et comparer à la référence de 10 millions de mots
|
||||
make profile # Produire build/profil/profil.txt avec -pg et gprof
|
||||
make clean # Supprimer les fichiers générés de build/
|
||||
```
|
||||
@@ -43,6 +48,11 @@ Les mesures de temps utilisent le binaire sans `-pg`. Les profils archivés
|
||||
dans `resultats/` sont les résultats des différentes étapes ; `make profile`
|
||||
écrit le nouveau profil dans `build/profil/`.
|
||||
|
||||
Le [test à 10 millions de mots](resultats/mesures/comparaison_decoupage_10000000.json)
|
||||
compare les versions avant et après le découpage en place, avec deux mesures
|
||||
sans instrumentation et un profil par version. Les rapports des deux
|
||||
versions sont identiques octet par octet.
|
||||
|
||||
## Documents et résultats
|
||||
|
||||
- [Compte rendu](COMPTE_RENDU.md)
|
||||
@@ -50,3 +60,5 @@ dans `resultats/` sont les résultats des différentes étapes ; `make profile`
|
||||
- [Journal des mesures](docs/notes.md)
|
||||
- [Ordre des profils et expériences](resultats/README.md)
|
||||
- [Comparaison de la normalisation sur le même PC](resultats/mesures/comparaison_normalisation_meme_pc.csv)
|
||||
- [Comparaison du découpage sur le même PC](resultats/mesures/comparaison_decoupage_meme_pc.csv)
|
||||
- [Comparaison du découpage sur 10 millions de mots](resultats/mesures/comparaison_decoupage_10000000.csv)
|
||||
|
||||
+135
@@ -697,3 +697,138 @@ chauffe incluse. L'empreinte reste **`1d53de903efd2b7c`**.
|
||||
Les [100 mesures brutes](../resultats/mesures/comparaison_normalisation_meme_pc.csv) sont
|
||||
conservées, ainsi que les [conditions et statistiques détaillées](../resultats/mesures/comparaison_normalisation_meme_pc.json),
|
||||
qui identifient le commit de référence et les deux sources utilisées.
|
||||
|
||||
## Découpage en place dans le tampon du texte
|
||||
|
||||
Après la réorganisation du dépôt, le programme se trouve dans
|
||||
`src/analyseur.c` et les commandes de validation sont `make check` et
|
||||
`make profile`.
|
||||
|
||||
`decouper_lignes` reçoit maintenant un `char *` modifiable. Chaque saut
|
||||
de ligne est remplacé par `\0`, et le tableau retourné contient des
|
||||
pointeurs vers le début des lignes dans le tampon `texte`. Les allocations
|
||||
et copies individuelles disparaissent ; le tableau de pointeurs conserve
|
||||
son allocation initiale et ses agrandissements par `realloc`.
|
||||
|
||||
Les lignes restent valides tant que `texte` existe. La normalisation agit
|
||||
directement sur ce tampon. À la fin du programme, on libère le tableau de
|
||||
pointeurs, puis `texte`, sans appeler `free` sur chaque ligne.
|
||||
|
||||
Les lignes vides sont conservées. Seules les lignes terminées par `\n`
|
||||
sont retournées, comme dans la version précédente ; le générateur produit
|
||||
déjà un saut de ligne final. Le parcours reste en O(taille du texte), mais
|
||||
il évite les allocations et les copies de son contenu.
|
||||
|
||||
Sur le corpus complet, cela supprime **21 746 allocations de lignes** et
|
||||
autant de libérations. Le stockage de leurs copies représentait
|
||||
**1 561 330 octets**, soit environ **1,49 Mio**, hors coût de l'allocateur.
|
||||
|
||||
Le profil est archivé dans [09_decoupage.txt](../resultats/profils/09_decoupage.txt).
|
||||
La comparaison utilise le commit `875af6fe9eaee7a2a9a997c7fe4102d216a1b9fb`
|
||||
comme référence avant modification. Les deux versions sont compilées avec
|
||||
`-std=c11 -Wall -Wextra -Wpedantic -O0`, sans `-pg`, puis exécutées sur
|
||||
**salle235-06**, CPU logique **0**, avec **GCC 16.2.1**.
|
||||
|
||||
Après cinq exécutions de chauffe par version, 50 mesures par version
|
||||
sont réalisées en alternant l'ordre à chaque paire. Le temps réel inclut
|
||||
le lancement du programme et ses écritures dans `build/`. Le temps CPU
|
||||
est la somme des temps utilisateur et système du processus. Le pic RSS
|
||||
est mesuré dans une série séparée avec `/usr/bin/time -f %M`, cinq fois
|
||||
par version, sur le même CPU.
|
||||
|
||||
| Mesure | Avant : copies des lignes | Après : pointeurs dans le texte |
|
||||
| --- | ---: | ---: |
|
||||
| Allocations du contenu des lignes | 21 746 | 0 |
|
||||
| Octets alloués pour le contenu des lignes | 1 561 330 | 0 |
|
||||
| Temps réel médian | 84,36 ms | 79,60 ms |
|
||||
| Temps CPU médian | 54,75 ms | 49,38 ms |
|
||||
| Pic RSS médian | 6 688 Kio | 4 896 Kio |
|
||||
|
||||
Le gain médian est de **5,6 % en temps réel** et de **9,8 % en temps CPU**.
|
||||
La nouvelle version est plus rapide dans 36 paires sur 50 en temps réel
|
||||
et 39 sur 50 en temps CPU. Les temps fluctuent : la comparaison porte
|
||||
sur cette série avant/après, et non sur les mesures historiques de la
|
||||
normalisation. La baisse du pic RSS médian est de **1 792 Kio**.
|
||||
|
||||
Les [mesures de temps](../resultats/mesures/comparaison_decoupage_meme_pc.csv),
|
||||
les [mesures de mémoire](../resultats/mesures/comparaison_decoupage_memoire.csv)
|
||||
et les [conditions et statistiques](../resultats/mesures/comparaison_decoupage_meme_pc.json)
|
||||
sont conservées. Le fichier de conditions contient aussi les empreintes
|
||||
SHA-256 des sources avant et après modification.
|
||||
|
||||
Validation : `make check` et `make profile` passent sans avertissement de
|
||||
compilation. Les 110 exécutions de comparaison, chauffe comprise, et les
|
||||
10 mesures de mémoire produisent un rapport et une sortie console
|
||||
identiques octet par octet à la référence. L'empreinte reste
|
||||
**`1d53de903efd2b7c`**.
|
||||
|
||||
Des tests temporaires sous AddressSanitizer et UndefinedBehaviorSanitizer
|
||||
ont comparé le découpage à l'ancienne fonction sur les textes vides, les
|
||||
lignes vides, les suffixes sans saut de ligne, les zéros internes, les
|
||||
fins de ligne CRLF, une ligne de 65 536 caractères, les seuils de capacité
|
||||
jusqu'à 32 769 lignes et le corpus complet. Ils vérifient aussi que chaque
|
||||
pointeur vise le tampon initial et que les lignes restent identiques
|
||||
après normalisation. Le programme complet passe également avec ces outils,
|
||||
sans double libération ni accès mémoire invalide.
|
||||
|
||||
Commandes utilisées pour cette étape à 250 000 mots, avant l'augmentation
|
||||
du volume :
|
||||
|
||||
```bash
|
||||
make check
|
||||
make profile
|
||||
cp build/profil/profil.txt resultats/profils/09_decoupage.txt
|
||||
```
|
||||
|
||||
## Comparaison du découpage sur 10 millions de mots
|
||||
|
||||
Le paramètre `NB_MOTS_TEXTE` passe à **10 000 000**. Pour comparer le
|
||||
découpage, ce changement est appliqué aussi à la version avant optimisation,
|
||||
issue du commit `875af6fe9eaee7a2a9a997c7fe4102d216a1b9fb`. Les différences
|
||||
entre les deux versions restent le découpage en place et la suppression
|
||||
des libérations individuelles des lignes.
|
||||
|
||||
Les deux versions sont compilées avec
|
||||
`-std=c11 -Wall -Wextra -Wpedantic -O0`, sur **salle235-06**, avec
|
||||
**GCC 16.2.1**, puis exécutées sur le **CPU logique 0**. Deux mesures sans
|
||||
`-pg` sont réalisées par version, dans l'ordre avant/après puis après/avant.
|
||||
Une exécution profilée supplémentaire par version produit les nouveaux
|
||||
profils.
|
||||
|
||||
| Mesure | Avant découpage en place | Après découpage en place |
|
||||
| --- | ---: | ---: |
|
||||
| Temps réels sans profiling | 2,042 s ; 1,993 s | 1,768 s ; 1,765 s |
|
||||
| Temps réel moyen | 2,0175 s | 1,7664 s |
|
||||
| Temps CPU moyen | 1,95 s | 1,72 s |
|
||||
| Moyenne des pics RSS | 145 780 Kio | 72 054 Kio |
|
||||
| Temps propre de `decouper_lignes` avec `-pg` | 0,28 s | 0,12 s |
|
||||
| Temps total attribué par `gprof` | 1,65 s | 1,57 s |
|
||||
|
||||
Le gain observé sur les deux mesures sans instrumentation est de
|
||||
**12,4 % en temps réel** et **11,8 % en temps CPU**. Le pic RSS moyen
|
||||
baisse de **50,6 %**, d'environ **142,4 Mio à 70,4 Mio**. Les deux mesures
|
||||
individuelles donnent une version après découpage plus rapide.
|
||||
|
||||
Les [nouveaux profils avant](../resultats/profils/10000000_mots/avant_decoupage.txt)
|
||||
et [après](../resultats/profils/10000000_mots/apres_decoupage.txt) reposent
|
||||
respectivement sur environ **165 et 157 échantillons attribués**, avec
|
||||
une période de 0,01 s. Les anciennes captures à 250 000 mots n'en
|
||||
contenaient que 3 et 7 : elles étaient trop courtes pour interpréter une
|
||||
variation de quelques centièmes comme une régression. Les temps de
|
||||
`gprof` restent des estimations ; le gain global est mesuré sans `-pg`.
|
||||
|
||||
Les [mesures brutes](../resultats/mesures/comparaison_decoupage_10000000.csv)
|
||||
et les [conditions détaillées](../resultats/mesures/comparaison_decoupage_10000000.json)
|
||||
identifient les sources, leurs empreintes SHA-256, le protocole et les profils.
|
||||
|
||||
Le nouveau corpus contient **10 000 000 mots**, **869 827 lignes** et
|
||||
**6 098 mots distincts**. Le bigramme reste `me`, avec 696 057 occurrences
|
||||
et `n` comme troisième lettre la plus fréquente. Les six exécutions
|
||||
produisent des rapports et sorties console identiques avant/après.
|
||||
|
||||
L'empreinte de ce nouveau volume est **`b35be1258a9cb3f6`**. Le
|
||||
[rapport de référence à 10 millions](../resultats/rapport_reference_10000000.txt)
|
||||
est issu de la version avant découpage, puis vérifié avec la version
|
||||
après découpage. Le [rapport historique à 250 000 mots](../resultats/rapport_reference.txt)
|
||||
et son empreinte `1d53de903efd2b7c` sont conservés. `make check` utilise
|
||||
désormais la référence à 10 millions de mots.
|
||||
|
||||
+29
-5
@@ -1,8 +1,10 @@
|
||||
# Résultats conservés
|
||||
|
||||
Les profils suivent l'ordre des optimisations. Les commits indiqués
|
||||
contiennent les versions de `analyseur.c` utilisées à ces étapes, avant
|
||||
le déplacement des sources dans `src/`.
|
||||
Les profils 00 à 09 portent sur **250 000 mots** et suivent l'ordre des
|
||||
optimisations. Les commits des étapes
|
||||
00 à 08 contiennent les versions de `analyseur.c` avant son déplacement
|
||||
dans `src/`. Pour l'étape 09, les conditions de mesure identifient le
|
||||
commit de référence et les empreintes SHA-256 des deux sources comparées.
|
||||
|
||||
| Étape | Profil | Version du code |
|
||||
| --- | --- | --- |
|
||||
@@ -15,6 +17,7 @@ le déplacement des sources dans `src/`.
|
||||
| 06 — Analyse des bigrammes | [06_bigrammes.txt](profils/06_bigrammes.txt) | `e3076e4` |
|
||||
| 07 — Index des mots vides | [07_mots_vides.txt](profils/07_mots_vides.txt) | `1331811` |
|
||||
| 08 — Table de normalisation | [08_normalisation.txt](profils/08_normalisation.txt) | `19ad9b7` |
|
||||
| 09 — Découpage en place | [09_decoupage.txt](profils/09_decoupage.txt) | [Sources et empreintes SHA-256](mesures/comparaison_decoupage_meme_pc.json) |
|
||||
|
||||
Les [mesures du bilan après le tri](mesures/mesures_bilan_tri.csv) comparent
|
||||
le programme initial à l'étape 05. La colonne `final` désigne cette étape.
|
||||
@@ -24,8 +27,29 @@ compare les étapes 07 et 08 sur le même PC, avec 50 mesures par version.
|
||||
Les [conditions et statistiques](mesures/comparaison_normalisation_meme_pc.json)
|
||||
précisent la machine, le compilateur, les sources et le protocole.
|
||||
|
||||
Le [rapport de référence](rapport_reference.txt) conserve l'empreinte
|
||||
`1d53de903efd2b7c`. `make check` compare le rapport courant à ce fichier.
|
||||
La [comparaison du découpage](mesures/comparaison_decoupage_meme_pc.csv)
|
||||
compare les étapes 08 et 09 sur le même PC, avec 50 mesures de temps par
|
||||
version. Le [pic mémoire](mesures/comparaison_decoupage_memoire.csv) est
|
||||
mesuré séparément avec GNU time, cinq fois par version. Les
|
||||
[conditions et statistiques](mesures/comparaison_decoupage_meme_pc.json)
|
||||
décrivent les deux séries et les vérifications des résultats.
|
||||
|
||||
La comparaison complémentaire à **10 000 000 mots** est conservée séparément :
|
||||
|
||||
- [Profil avant découpage](profils/10000000_mots/avant_decoupage.txt).
|
||||
- [Profil après découpage](profils/10000000_mots/apres_decoupage.txt).
|
||||
- [Mesures brutes](mesures/comparaison_decoupage_10000000.csv) et
|
||||
[conditions et statistiques](mesures/comparaison_decoupage_10000000.json).
|
||||
|
||||
Elle utilise deux mesures sans `-pg` et une exécution profilée par version,
|
||||
sur le même CPU. Le seul changement de la version de référence est le
|
||||
nombre de mots ; la version comparée ajoute le découpage en place.
|
||||
|
||||
Le [rapport historique](rapport_reference.txt), pour 250 000 mots, conserve
|
||||
l'empreinte `1d53de903efd2b7c`. La [référence actuelle à 10 millions](rapport_reference_10000000.txt)
|
||||
a l'empreinte `b35be1258a9cb3f6`. Elle provient de la version avant découpage
|
||||
et a été vérifiée à l'identique avec la version après découpage.
|
||||
`make check` compare maintenant le rapport courant à cette nouvelle référence.
|
||||
|
||||
Les commandes historiques et les autres mesures sont décrites dans le
|
||||
[journal](../docs/notes.md). Chaque gain de temps doit être calculé à partir
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
paire;ordre;version;reel_s;cpu_s;utilisateur_s;systeme_s;rss_max_kio
|
||||
1;1;avant_decoupage;2.041986573;1.960000000;1.930000000;0.030000000;145776
|
||||
1;2;apres_decoupage;1.767853857;1.720000000;1.710000000;0.010000000;71796
|
||||
2;1;apres_decoupage;1.764871005;1.720000000;1.710000000;0.010000000;72312
|
||||
2;2;avant_decoupage;1.993093881;1.940000000;1.920000000;0.020000000;145784
|
||||
|
@@ -0,0 +1,111 @@
|
||||
{
|
||||
"machine": "salle235-06",
|
||||
"processeur": "Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz",
|
||||
"cpu_logique": 0,
|
||||
"compilateur": "gcc (GCC) 16.2.1 20260810",
|
||||
"options": [
|
||||
"-std=c11",
|
||||
"-Wall",
|
||||
"-Wextra",
|
||||
"-Wpedantic",
|
||||
"-O0"
|
||||
],
|
||||
"nb_mots_texte": 10000000,
|
||||
"nb_lignes": 869827,
|
||||
"nb_mots_distincts": 6098,
|
||||
"reference_commit": "875af6fe9eaee7a2a9a997c7fe4102d216a1b9fb",
|
||||
"reference_adaptation": "NB_MOTS_TEXTE porté de 250000 à 10000000 dans les deux versions",
|
||||
"source_sha256": {
|
||||
"avant_decoupage": "41fb23d6bbd63a6f2b9b127b0b877ac4bd133874562940930c81cd76917137ff",
|
||||
"apres_decoupage": "7bbb1dc588d2ec82cbb700b135bbdf308bff1a684598c334a5c86bb054c8e04c"
|
||||
},
|
||||
"mesures_sans_pg_par_version": 2,
|
||||
"executions_profilees_par_version": 1,
|
||||
"executions_verifiees": 6,
|
||||
"ordre_mesures": "avant/après puis après/avant",
|
||||
"horloge_reelle": "time.perf_counter, lancement du programme via GNU time inclus",
|
||||
"temps_cpu_et_memoire": "/usr/bin/time -f %U;%S;%M : temps CPU au centième de seconde et RSS maximal en Kio",
|
||||
"repertoire_execution": "build/verification_10000000_thn5_mfx",
|
||||
"empreinte_rapport": "b35be1258a9cb3f6",
|
||||
"rapport_reference": "resultats/rapport_reference_10000000.txt",
|
||||
"reference_validee_depuis": "version avant découpage à 10000000 mots",
|
||||
"profils": {
|
||||
"avant_decoupage": {
|
||||
"fichier": "resultats/profils/10000000_mots/avant_decoupage.txt",
|
||||
"temps_attribue_s": 1.65,
|
||||
"periode_echantillon_s": 0.01,
|
||||
"echantillons_attribues": 165,
|
||||
"decouper_lignes_self_s": 0.28,
|
||||
"execution_profilee": {
|
||||
"reel_s": 2.700588346000586,
|
||||
"cpu_s": 2.63,
|
||||
"utilisateur_s": 2.61,
|
||||
"systeme_s": 0.02,
|
||||
"rss_max_kio": 145812
|
||||
}
|
||||
},
|
||||
"apres_decoupage": {
|
||||
"fichier": "resultats/profils/10000000_mots/apres_decoupage.txt",
|
||||
"temps_attribue_s": 1.57,
|
||||
"periode_echantillon_s": 0.01,
|
||||
"echantillons_attribues": 157,
|
||||
"decouper_lignes_self_s": 0.12,
|
||||
"execution_profilee": {
|
||||
"reel_s": 2.4980121059998055,
|
||||
"cpu_s": 2.43,
|
||||
"utilisateur_s": 2.43,
|
||||
"systeme_s": 0.0,
|
||||
"rss_max_kio": 72384
|
||||
}
|
||||
}
|
||||
},
|
||||
"avant_decoupage": {
|
||||
"reel_s": {
|
||||
"mesures": [
|
||||
2.041986573000031,
|
||||
1.9930938809993677
|
||||
],
|
||||
"moyenne": 2.0175402269996994
|
||||
},
|
||||
"cpu_s": {
|
||||
"mesures": [
|
||||
1.96,
|
||||
1.94
|
||||
],
|
||||
"moyenne": 1.95
|
||||
},
|
||||
"rss_max_kio": {
|
||||
"mesures": [
|
||||
145776,
|
||||
145784
|
||||
],
|
||||
"moyenne": 145780
|
||||
}
|
||||
},
|
||||
"apres_decoupage": {
|
||||
"reel_s": {
|
||||
"mesures": [
|
||||
1.7678538569998636,
|
||||
1.7648710049998044
|
||||
],
|
||||
"moyenne": 1.766362430999834
|
||||
},
|
||||
"cpu_s": {
|
||||
"mesures": [
|
||||
1.72,
|
||||
1.72
|
||||
],
|
||||
"moyenne": 1.72
|
||||
},
|
||||
"rss_max_kio": {
|
||||
"mesures": [
|
||||
71796,
|
||||
72312
|
||||
],
|
||||
"moyenne": 72054
|
||||
}
|
||||
},
|
||||
"gain_reel_pourcent": 12.449704478675693,
|
||||
"gain_cpu_pourcent": 11.794871794871797,
|
||||
"gain_rss_pourcent": 50.57346686788311
|
||||
}
|
||||
@@ -0,0 +1,101 @@
|
||||
paire;ordre;version;reel_s;cpu_s;utilisateur_s;systeme_s
|
||||
1;1;normalisation;0.098564077;0.066697000;0.063348000;0.003349000
|
||||
1;2;decoupage;0.077939649;0.049954000;0.046830000;0.003124000
|
||||
2;1;decoupage;0.079878005;0.049596000;0.049596000;0.000000000
|
||||
2;2;normalisation;0.086629509;0.057711000;0.057711000;0.000000000
|
||||
3;1;normalisation;0.086206658;0.054246000;0.054246000;0.000000000
|
||||
3;2;decoupage;0.077741974;0.048682000;0.045429000;0.003253000
|
||||
4;1;decoupage;0.076489187;0.050586000;0.050586000;0.000000000
|
||||
4;2;normalisation;0.081969255;0.055426000;0.048897000;0.006529000
|
||||
5;1;normalisation;0.084525585;0.055295000;0.055295000;0.000000000
|
||||
5;2;decoupage;0.082314577;0.050980000;0.050980000;0.000000000
|
||||
6;1;decoupage;0.086664939;0.050787000;0.050787000;0.000000000
|
||||
6;2;normalisation;0.091178679;0.059710000;0.059710000;0.000000000
|
||||
7;1;normalisation;0.122270653;0.091533000;0.084745000;0.006788000
|
||||
7;2;decoupage;0.088566138;0.059787000;0.056466000;0.003321000
|
||||
8;1;decoupage;0.074593149;0.048882000;0.045816000;0.003066000
|
||||
8;2;normalisation;0.082676622;0.054373000;0.050965000;0.003408000
|
||||
9;1;normalisation;0.077770477;0.052938000;0.049816000;0.003122000
|
||||
9;2;decoupage;0.081749320;0.050059000;0.046735000;0.003324000
|
||||
10;1;decoupage;0.107211398;0.080546000;0.077318000;0.003228000
|
||||
10;2;normalisation;0.079203746;0.054812000;0.054812000;0.000000000
|
||||
11;1;normalisation;0.107278623;0.081262000;0.077865000;0.003397000
|
||||
11;2;decoupage;0.074858666;0.047378000;0.047378000;0.000000000
|
||||
12;1;decoupage;0.074898321;0.047529000;0.047529000;0.000000000
|
||||
12;2;normalisation;0.082979193;0.052978000;0.049661000;0.003317000
|
||||
13;1;normalisation;0.091366804;0.055490000;0.048941000;0.006549000
|
||||
13;2;decoupage;0.079342845;0.048232000;0.048232000;0.000000000
|
||||
14;1;decoupage;0.073351969;0.049378000;0.046080000;0.003298000
|
||||
14;2;normalisation;0.082174939;0.056187000;0.056187000;0.000000000
|
||||
15;1;normalisation;0.100514947;0.073726000;0.067040000;0.006686000
|
||||
15;2;decoupage;0.107643859;0.077912000;0.077912000;0.000000000
|
||||
16;1;decoupage;0.071424612;0.047602000;0.047602000;0.000000000
|
||||
16;2;normalisation;0.080502181;0.054009000;0.054009000;0.000000000
|
||||
17;1;normalisation;0.080461308;0.052988000;0.052988000;0.000000000
|
||||
17;2;decoupage;0.072877468;0.047245000;0.047245000;0.000000000
|
||||
18;1;decoupage;0.067525437;0.047622000;0.044458000;0.003164000
|
||||
18;2;normalisation;0.076900013;0.052838000;0.049726000;0.003112000
|
||||
19;1;normalisation;0.084867661;0.053998000;0.053998000;0.000000000
|
||||
19;2;decoupage;0.074569286;0.048463000;0.045426000;0.003037000
|
||||
20;1;decoupage;0.080500195;0.048442000;0.041979000;0.006463000
|
||||
20;2;normalisation;0.089638558;0.060543000;0.057370000;0.003173000
|
||||
21;1;normalisation;0.077757425;0.053577000;0.050414000;0.003163000
|
||||
21;2;decoupage;0.079858479;0.048311000;0.041903000;0.006408000
|
||||
22;1;decoupage;0.076939251;0.049027000;0.045759000;0.003268000
|
||||
22;2;normalisation;0.082923503;0.054112000;0.054112000;0.000000000
|
||||
23;1;normalisation;0.082431887;0.056499000;0.056499000;0.000000000
|
||||
23;2;decoupage;0.075330615;0.048884000;0.048884000;0.000000000
|
||||
24;1;decoupage;0.076024610;0.048309000;0.048309000;0.000000000
|
||||
24;2;normalisation;0.084193587;0.054436000;0.054436000;0.000000000
|
||||
25;1;normalisation;0.088893697;0.054852000;0.048409000;0.006443000
|
||||
25;2;decoupage;0.074862850;0.048490000;0.048490000;0.000000000
|
||||
26;1;decoupage;0.081130698;0.048161000;0.048161000;0.000000000
|
||||
26;2;normalisation;0.119043098;0.087924000;0.078516000;0.009408000
|
||||
27;1;normalisation;0.078182844;0.053847000;0.053847000;0.000000000
|
||||
27;2;decoupage;0.074151354;0.048917000;0.048917000;0.000000000
|
||||
28;1;decoupage;0.075701689;0.049406000;0.049406000;0.000000000
|
||||
28;2;normalisation;0.083841894;0.055895000;0.052957000;0.002938000
|
||||
29;1;normalisation;0.085386498;0.054614000;0.054614000;0.000000000
|
||||
29;2;decoupage;0.118421751;0.084560000;0.078032000;0.006528000
|
||||
30;1;decoupage;0.110804120;0.075276000;0.075276000;0.000000000
|
||||
30;2;normalisation;0.096160804;0.058503000;0.058503000;0.000000000
|
||||
31;1;normalisation;0.084021302;0.058931000;0.055848000;0.003083000
|
||||
31;2;decoupage;0.101838876;0.075659000;0.065788000;0.009871000
|
||||
32;1;decoupage;0.103077891;0.075699000;0.069127000;0.006572000
|
||||
32;2;normalisation;0.078340598;0.052816000;0.043481000;0.009335000
|
||||
33;1;normalisation;0.077510008;0.054685000;0.054685000;0.000000000
|
||||
33;2;decoupage;0.075927998;0.048442000;0.045406000;0.003036000
|
||||
34;1;decoupage;0.085126298;0.049132000;0.049132000;0.000000000
|
||||
34;2;normalisation;0.086433030;0.058404000;0.058404000;0.000000000
|
||||
35;1;normalisation;0.079036812;0.053484000;0.053484000;0.000000000
|
||||
35;2;decoupage;0.074087800;0.047513000;0.044337000;0.003176000
|
||||
36;1;decoupage;0.076034234;0.046593000;0.046593000;0.000000000
|
||||
36;2;normalisation;0.080232906;0.053331000;0.049986000;0.003345000
|
||||
37;1;normalisation;0.080259313;0.052903000;0.052903000;0.000000000
|
||||
37;2;decoupage;0.078727491;0.048263000;0.048263000;0.000000000
|
||||
38;1;decoupage;0.082345265;0.048775000;0.045511000;0.003264000
|
||||
38;2;normalisation;0.085401830;0.053081000;0.046822000;0.006259000
|
||||
39;1;normalisation;0.087125157;0.054045000;0.050672000;0.003373000
|
||||
39;2;decoupage;0.085990699;0.052955000;0.049640000;0.003315000
|
||||
40;1;decoupage;0.095500738;0.062192000;0.059158000;0.003034000
|
||||
40;2;normalisation;0.081692650;0.054493000;0.051075000;0.003418000
|
||||
41;1;normalisation;0.083779548;0.053721000;0.050554000;0.003167000
|
||||
41;2;decoupage;0.107384460;0.079632000;0.079632000;0.000000000
|
||||
42;1;decoupage;0.077822528;0.049391000;0.046097000;0.003294000
|
||||
42;2;normalisation;0.091810990;0.054198000;0.051011000;0.003187000
|
||||
43;1;normalisation;0.118135004;0.086285000;0.082959000;0.003326000
|
||||
43;2;decoupage;0.109951491;0.076873000;0.073542000;0.003331000
|
||||
44;1;decoupage;0.091871545;0.063580000;0.060232000;0.003348000
|
||||
44;2;normalisation;0.089916762;0.054942000;0.051507000;0.003435000
|
||||
45;1;normalisation;0.088390574;0.056449000;0.056449000;0.000000000
|
||||
45;2;decoupage;0.088286201;0.051874000;0.051874000;0.000000000
|
||||
46;1;decoupage;0.107611359;0.080214000;0.076995000;0.003219000
|
||||
46;2;normalisation;0.081143835;0.053834000;0.053834000;0.000000000
|
||||
47;1;normalisation;0.116520885;0.088303000;0.078827000;0.009476000
|
||||
47;2;decoupage;0.078122386;0.051368000;0.048164000;0.003204000
|
||||
48;1;decoupage;0.075640486;0.048041000;0.044831000;0.003210000
|
||||
48;2;normalisation;0.085947676;0.055347000;0.048823000;0.006524000
|
||||
49;1;normalisation;0.111680766;0.085783000;0.079436000;0.006347000
|
||||
49;2;decoupage;0.116693463;0.079256000;0.079256000;0.000000000
|
||||
50;1;decoupage;0.091055658;0.055567000;0.052477000;0.003090000
|
||||
50;2;normalisation;0.080353565;0.054549000;0.054549000;0.000000000
|
||||
|
@@ -0,0 +1,95 @@
|
||||
{
|
||||
"machine": "salle235-06",
|
||||
"processeur": "Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz",
|
||||
"cpu_logique": 0,
|
||||
"compilateur": "gcc (GCC) 16.2.1 20260810",
|
||||
"options": [
|
||||
"-std=c11",
|
||||
"-Wall",
|
||||
"-Wextra",
|
||||
"-Wpedantic",
|
||||
"-O0"
|
||||
],
|
||||
"profiling": false,
|
||||
"reference_commit": "875af6fe9eaee7a2a9a997c7fe4102d216a1b9fb",
|
||||
"chemin_source": "src/analyseur.c",
|
||||
"source_sha256": {
|
||||
"normalisation": "fa529c2b8589dbceda26c40eae2019648cc56785c6462e61b70dac8cfe1a2d01",
|
||||
"decoupage": "1d43a007a7298d5ca1b1cbdf7a53f2e9ce6eb58196d29f3a38ceb0e04fe4e8e0"
|
||||
},
|
||||
"chauffe_par_version": 5,
|
||||
"mesures_par_version": 50,
|
||||
"executions_verifiees": 110,
|
||||
"horloge_reelle": "time.perf_counter, lancement et attente du processus inclus",
|
||||
"quartiles": "statistics.quantiles(method=\"inclusive\")",
|
||||
"empreinte_rapport": "1d53de903efd2b7c",
|
||||
"allocations_contenu_lignes": {
|
||||
"normalisation": 21746,
|
||||
"decoupage": 0
|
||||
},
|
||||
"octets_alloues_contenu_lignes": {
|
||||
"normalisation": 1561330,
|
||||
"decoupage": 0
|
||||
},
|
||||
"normalisation": {
|
||||
"reel_s": {
|
||||
"mediane": 0.08435958599989135,
|
||||
"q1": 0.08066259450015423,
|
||||
"q3": 0.0898472110000057,
|
||||
"min": 0.0769000129998858,
|
||||
"max": 0.12227065299975948
|
||||
},
|
||||
"cpu_s": {
|
||||
"mediane": 0.0547485,
|
||||
"q1": 0.053884749999999995,
|
||||
"q3": 0.05823075,
|
||||
"min": 0.052816,
|
||||
"max": 0.091533
|
||||
},
|
||||
"rss_max_kio": {
|
||||
"mediane": 6688,
|
||||
"q1": 6688.0,
|
||||
"q3": 6692.0,
|
||||
"min": 6676,
|
||||
"max": 6692
|
||||
}
|
||||
},
|
||||
"decoupage": {
|
||||
"reel_s": {
|
||||
"mediane": 0.07960066200007532,
|
||||
"q1": 0.07565578674984863,
|
||||
"q3": 0.09043327800020506,
|
||||
"min": 0.06752543699985836,
|
||||
"max": 0.11842175099991437
|
||||
},
|
||||
"cpu_s": {
|
||||
"mediane": 0.0493845,
|
||||
"q1": 0.04834374999999999,
|
||||
"q3": 0.058732,
|
||||
"min": 0.046592999999999996,
|
||||
"max": 0.08456
|
||||
},
|
||||
"rss_max_kio": {
|
||||
"mediane": 4896,
|
||||
"q1": 4884.0,
|
||||
"q3": 4900.0,
|
||||
"min": 4880,
|
||||
"max": 4900
|
||||
}
|
||||
},
|
||||
"gain_reel_pourcent": 5.641236788220083,
|
||||
"gain_cpu_pourcent": 9.797528699416425,
|
||||
"paires_plus_rapides": {
|
||||
"reel_s": 36,
|
||||
"cpu_s": 39
|
||||
},
|
||||
"mesure_cpu": "os.wait4 : ru_utime + ru_stime du processus fils",
|
||||
"mesure_memoire": {
|
||||
"methode": "/usr/bin/time -f %M, dans une série distincte sur le même CPU",
|
||||
"mesures_par_version": 5,
|
||||
"fichier": "comparaison_decoupage_memoire.csv",
|
||||
"note": "Le ru_maxrss du lancement direct depuis Python héritait de son pic mémoire (21 420 Kio) ; il a été écarté au profit du processus fils de GNU time."
|
||||
},
|
||||
"executions_verifiees_memoire": 10,
|
||||
"repertoire_execution": "build/verification_decoupage_arnsavcd"
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
paire;ordre;version;rss_max_kio
|
||||
1;1;normalisation;6688
|
||||
1;2;decoupage;4900
|
||||
2;1;decoupage;4896
|
||||
2;2;normalisation;6692
|
||||
3;1;normalisation;6692
|
||||
3;2;decoupage;4900
|
||||
4;1;decoupage;4884
|
||||
4;2;normalisation;6688
|
||||
5;1;normalisation;6676
|
||||
5;2;decoupage;4880
|
||||
|
@@ -0,0 +1,158 @@
|
||||
Flat profile:
|
||||
|
||||
Each sample counts as 0.01 seconds.
|
||||
% cumulative self self total
|
||||
time seconds seconds calls ms/call ms/call name
|
||||
14.29 0.01 0.01 250000 0.00 0.00 est_mot_vide
|
||||
14.29 0.02 0.01 150182 0.00 0.00 chercher_mot
|
||||
14.29 0.03 0.01 150182 0.00 0.00 compter_mot
|
||||
14.29 0.04 0.01 21746 0.00 0.00 compter_mots_ligne
|
||||
14.29 0.05 0.01 1 10.00 10.00 analyser_bigrammes
|
||||
14.29 0.06 0.01 1 10.00 10.00 decouper_lignes
|
||||
14.29 0.07 0.01 1 10.00 10.00 generer_texte
|
||||
0.00 0.07 0.00 928117 0.00 0.00 alea
|
||||
0.00 0.07 0.00 355573 0.00 0.00 egales
|
||||
0.00 0.07 0.00 293223 0.00 0.00 hacher_mot
|
||||
0.00 0.07 0.00 129602 0.00 0.00 doit_echanger
|
||||
0.00 0.07 0.00 32813 0.00 0.00 comparer
|
||||
0.00 0.07 0.00 26801 0.00 0.00 ajouter
|
||||
0.00 0.07 0.00 21746 0.00 0.00 normaliser_ligne
|
||||
0.00 0.07 0.00 8798 0.00 0.00 retablir_tas
|
||||
0.00 0.07 0.00 5866 0.00 0.00 copier
|
||||
0.00 0.07 0.00 1 0.00 0.00 construire_rapport
|
||||
0.00 0.07 0.00 1 0.00 0.00 ecart_type_longueur
|
||||
0.00 0.07 0.00 1 0.00 0.00 empreinte
|
||||
0.00 0.07 0.00 1 0.00 0.00 generer_vocabulaire
|
||||
0.00 0.07 0.00 1 0.00 0.00 initialiser_mots_vides
|
||||
0.00 0.07 0.00 1 0.00 0.00 longueur_moyenne
|
||||
0.00 0.07 0.00 1 0.00 0.00 racine
|
||||
0.00 0.07 0.00 1 0.00 0.00 trier_entrees
|
||||
|
||||
Call graph
|
||||
|
||||
|
||||
granularity: each sample hit covers 4 byte(s) for 14.29% of 0.07 seconds
|
||||
|
||||
index % time self children called name
|
||||
<spontaneous>
|
||||
[1] 100.0 0.00 0.07 main [1]
|
||||
0.01 0.03 21746/21746 compter_mots_ligne [2]
|
||||
0.01 0.00 1/1 generer_texte [8]
|
||||
0.01 0.00 1/1 decouper_lignes [7]
|
||||
0.01 0.00 1/1 analyser_bigrammes [6]
|
||||
0.00 0.00 21746/21746 normaliser_ligne [15]
|
||||
0.00 0.00 1/1 generer_vocabulaire [21]
|
||||
0.00 0.00 1/1 trier_entrees [25]
|
||||
0.00 0.00 1/1 longueur_moyenne [23]
|
||||
0.00 0.00 1/1 ecart_type_longueur [19]
|
||||
0.00 0.00 1/1 racine [24]
|
||||
0.00 0.00 1/1 construire_rapport [18]
|
||||
0.00 0.00 1/1 empreinte [20]
|
||||
-----------------------------------------------
|
||||
0.01 0.03 21746/21746 main [1]
|
||||
[2] 57.1 0.01 0.03 21746 compter_mots_ligne [2]
|
||||
0.01 0.01 150182/150182 compter_mot [3]
|
||||
0.01 0.00 250000/250000 est_mot_vide [4]
|
||||
-----------------------------------------------
|
||||
0.01 0.01 150182/150182 compter_mots_ligne [2]
|
||||
[3] 28.6 0.01 0.01 150182 compter_mot [3]
|
||||
0.01 0.00 150182/150182 chercher_mot [5]
|
||||
0.00 0.00 5866/5866 copier [17]
|
||||
-----------------------------------------------
|
||||
0.01 0.00 250000/250000 compter_mots_ligne [2]
|
||||
[4] 14.3 0.01 0.00 250000 est_mot_vide [4]
|
||||
0.00 0.00 202444/355573 egales [10]
|
||||
0.00 0.00 142981/293223 hacher_mot [11]
|
||||
0.00 0.00 1/1 initialiser_mots_vides [22]
|
||||
-----------------------------------------------
|
||||
0.01 0.00 150182/150182 compter_mot [3]
|
||||
[5] 14.3 0.01 0.00 150182 chercher_mot [5]
|
||||
0.00 0.00 153101/355573 egales [10]
|
||||
0.00 0.00 150182/293223 hacher_mot [11]
|
||||
-----------------------------------------------
|
||||
0.01 0.00 1/1 main [1]
|
||||
[6] 14.3 0.01 0.00 1 analyser_bigrammes [6]
|
||||
-----------------------------------------------
|
||||
0.01 0.00 1/1 main [1]
|
||||
[7] 14.3 0.01 0.00 1 decouper_lignes [7]
|
||||
-----------------------------------------------
|
||||
0.01 0.00 1/1 main [1]
|
||||
[8] 14.3 0.01 0.00 1 generer_texte [8]
|
||||
0.00 0.00 900183/928117 alea [9]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 27934/928117 generer_vocabulaire [21]
|
||||
0.00 0.00 900183/928117 generer_texte [8]
|
||||
[9] 0.0 0.00 0.00 928117 alea [9]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 28/355573 initialiser_mots_vides [22]
|
||||
0.00 0.00 153101/355573 chercher_mot [5]
|
||||
0.00 0.00 202444/355573 est_mot_vide [4]
|
||||
[10] 0.0 0.00 0.00 355573 egales [10]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 60/293223 initialiser_mots_vides [22]
|
||||
0.00 0.00 142981/293223 est_mot_vide [4]
|
||||
0.00 0.00 150182/293223 chercher_mot [5]
|
||||
[11] 0.0 0.00 0.00 293223 hacher_mot [11]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 129602/129602 retablir_tas [16]
|
||||
[12] 0.0 0.00 0.00 129602 doit_echanger [12]
|
||||
0.00 0.00 32813/32813 comparer [13]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 32813/32813 doit_echanger [12]
|
||||
[13] 0.0 0.00 0.00 32813 comparer [13]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 5867/26801 construire_rapport [18]
|
||||
0.00 0.00 20934/26801 generer_vocabulaire [21]
|
||||
[14] 0.0 0.00 0.00 26801 ajouter [14]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 21746/21746 main [1]
|
||||
[15] 0.0 0.00 0.00 21746 normaliser_ligne [15]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 8798/8798 trier_entrees [25]
|
||||
[16] 0.0 0.00 0.00 8798 retablir_tas [16]
|
||||
0.00 0.00 129602/129602 doit_echanger [12]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 5866/5866 compter_mot [3]
|
||||
[17] 0.0 0.00 0.00 5866 copier [17]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 1/1 main [1]
|
||||
[18] 0.0 0.00 0.00 1 construire_rapport [18]
|
||||
0.00 0.00 5867/26801 ajouter [14]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 1/1 main [1]
|
||||
[19] 0.0 0.00 0.00 1 ecart_type_longueur [19]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 1/1 main [1]
|
||||
[20] 0.0 0.00 0.00 1 empreinte [20]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 1/1 main [1]
|
||||
[21] 0.0 0.00 0.00 1 generer_vocabulaire [21]
|
||||
0.00 0.00 27934/928117 alea [9]
|
||||
0.00 0.00 20934/26801 ajouter [14]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 1/1 est_mot_vide [4]
|
||||
[22] 0.0 0.00 0.00 1 initialiser_mots_vides [22]
|
||||
0.00 0.00 60/293223 hacher_mot [11]
|
||||
0.00 0.00 28/355573 egales [10]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 1/1 main [1]
|
||||
[23] 0.0 0.00 0.00 1 longueur_moyenne [23]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 1/1 main [1]
|
||||
[24] 0.0 0.00 0.00 1 racine [24]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 1/1 main [1]
|
||||
[25] 0.0 0.00 0.00 1 trier_entrees [25]
|
||||
0.00 0.00 8798/8798 retablir_tas [16]
|
||||
-----------------------------------------------
|
||||
|
||||
Index by function name
|
||||
|
||||
[14] ajouter [17] copier [21] generer_vocabulaire
|
||||
[9] alea [7] decouper_lignes [11] hacher_mot
|
||||
[6] analyser_bigrammes [12] doit_echanger [22] initialiser_mots_vides
|
||||
[5] chercher_mot [19] ecart_type_longueur [23] longueur_moyenne
|
||||
[13] comparer [10] egales [15] normaliser_ligne
|
||||
[3] compter_mot [20] empreinte [24] racine
|
||||
[2] compter_mots_ligne [4] est_mot_vide [16] retablir_tas
|
||||
[18] construire_rapport [8] generer_texte [25] trier_entrees
|
||||
@@ -0,0 +1,163 @@
|
||||
Flat profile:
|
||||
|
||||
Each sample counts as 0.01 seconds.
|
||||
% cumulative self self total
|
||||
time seconds seconds calls ms/call ms/call name
|
||||
20.38 0.32 0.32 1 320.00 329.99 generer_texte
|
||||
17.83 0.60 0.28 1 280.00 280.00 analyser_bigrammes
|
||||
10.83 0.77 0.17 14463795 0.00 0.00 egales
|
||||
10.19 0.93 0.16 869827 0.00 0.00 compter_mots_ligne
|
||||
8.92 1.07 0.14 869827 0.00 0.00 normaliser_ligne
|
||||
7.64 1.19 0.12 11729593 0.00 0.00 hacher_mot
|
||||
7.64 1.31 0.12 5998884 0.00 0.00 chercher_mot
|
||||
7.64 1.43 0.12 1 120.00 120.00 decouper_lignes
|
||||
5.10 1.51 0.08 10000000 0.00 0.00 est_mot_vide
|
||||
1.91 1.54 0.03 5998884 0.00 0.00 compter_mot
|
||||
1.27 1.56 0.02 _init
|
||||
0.64 1.57 0.01 36026819 0.00 0.00 alea
|
||||
0.00 1.57 0.00 135315 0.00 0.00 doit_echanger
|
||||
0.00 1.57 0.00 27033 0.00 0.00 ajouter
|
||||
0.00 1.57 0.00 9146 0.00 0.00 retablir_tas
|
||||
0.00 1.57 0.00 6706 0.00 0.00 comparer
|
||||
0.00 1.57 0.00 6098 0.00 0.00 copier
|
||||
0.00 1.57 0.00 1 0.00 0.00 construire_rapport
|
||||
0.00 1.57 0.00 1 0.00 0.00 ecart_type_longueur
|
||||
0.00 1.57 0.00 1 0.00 0.00 empreinte
|
||||
0.00 1.57 0.00 1 0.00 0.01 generer_vocabulaire
|
||||
0.00 1.57 0.00 1 0.00 0.00 initialiser_mots_vides
|
||||
0.00 1.57 0.00 1 0.00 0.00 longueur_moyenne
|
||||
0.00 1.57 0.00 1 0.00 0.00 racine
|
||||
0.00 1.57 0.00 1 0.00 0.00 trier_entrees
|
||||
|
||||
Call graph
|
||||
|
||||
|
||||
granularity: each sample hit covers 4 byte(s) for 0.64% of 1.57 seconds
|
||||
|
||||
index % time self children called name
|
||||
<spontaneous>
|
||||
[1] 98.7 0.00 1.55 main [1]
|
||||
0.16 0.52 869827/869827 compter_mots_ligne [2]
|
||||
0.32 0.01 1/1 generer_texte [3]
|
||||
0.28 0.00 1/1 analyser_bigrammes [5]
|
||||
0.14 0.00 869827/869827 normaliser_ligne [9]
|
||||
0.12 0.00 1/1 decouper_lignes [11]
|
||||
0.00 0.00 1/1 generer_vocabulaire [14]
|
||||
0.00 0.00 1/1 trier_entrees [26]
|
||||
0.00 0.00 1/1 longueur_moyenne [24]
|
||||
0.00 0.00 1/1 ecart_type_longueur [22]
|
||||
0.00 0.00 1/1 racine [25]
|
||||
0.00 0.00 1/1 construire_rapport [21]
|
||||
0.00 0.00 1/1 empreinte [23]
|
||||
-----------------------------------------------
|
||||
0.16 0.52 869827/869827 main [1]
|
||||
[2] 43.3 0.16 0.52 869827 compter_mots_ligne [2]
|
||||
0.03 0.26 5998884/5998884 compter_mot [4]
|
||||
0.08 0.15 10000000/10000000 est_mot_vide [7]
|
||||
-----------------------------------------------
|
||||
0.32 0.01 1/1 main [1]
|
||||
[3] 21.0 0.32 0.01 1 generer_texte [3]
|
||||
0.01 0.00 35998885/36026819 alea [13]
|
||||
-----------------------------------------------
|
||||
0.03 0.26 5998884/5998884 compter_mots_ligne [2]
|
||||
[4] 18.2 0.03 0.26 5998884 compter_mot [4]
|
||||
0.12 0.14 5998884/5998884 chercher_mot [6]
|
||||
0.00 0.00 6098/6098 copier [20]
|
||||
-----------------------------------------------
|
||||
0.28 0.00 1/1 main [1]
|
||||
[5] 17.8 0.28 0.00 1 analyser_bigrammes [5]
|
||||
-----------------------------------------------
|
||||
0.12 0.14 5998884/5998884 compter_mot [4]
|
||||
[6] 16.3 0.12 0.14 5998884 chercher_mot [6]
|
||||
0.07 0.00 6347060/14463795 egales [8]
|
||||
0.06 0.00 5998884/11729593 hacher_mot [10]
|
||||
-----------------------------------------------
|
||||
0.08 0.15 10000000/10000000 compter_mots_ligne [2]
|
||||
[7] 14.9 0.08 0.15 10000000 est_mot_vide [7]
|
||||
0.10 0.00 8116707/14463795 egales [8]
|
||||
0.06 0.00 5730649/11729593 hacher_mot [10]
|
||||
0.00 0.00 1/1 initialiser_mots_vides [15]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 28/14463795 initialiser_mots_vides [15]
|
||||
0.07 0.00 6347060/14463795 chercher_mot [6]
|
||||
0.10 0.00 8116707/14463795 est_mot_vide [7]
|
||||
[8] 10.8 0.17 0.00 14463795 egales [8]
|
||||
-----------------------------------------------
|
||||
0.14 0.00 869827/869827 main [1]
|
||||
[9] 8.9 0.14 0.00 869827 normaliser_ligne [9]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 60/11729593 initialiser_mots_vides [15]
|
||||
0.06 0.00 5730649/11729593 est_mot_vide [7]
|
||||
0.06 0.00 5998884/11729593 chercher_mot [6]
|
||||
[10] 7.6 0.12 0.00 11729593 hacher_mot [10]
|
||||
-----------------------------------------------
|
||||
0.12 0.00 1/1 main [1]
|
||||
[11] 7.6 0.12 0.00 1 decouper_lignes [11]
|
||||
-----------------------------------------------
|
||||
<spontaneous>
|
||||
[12] 1.3 0.02 0.00 _init [12]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 27934/36026819 generer_vocabulaire [14]
|
||||
0.01 0.00 35998885/36026819 generer_texte [3]
|
||||
[13] 0.6 0.01 0.00 36026819 alea [13]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 1/1 main [1]
|
||||
[14] 0.0 0.00 0.00 1 generer_vocabulaire [14]
|
||||
0.00 0.00 27934/36026819 alea [13]
|
||||
0.00 0.00 20934/27033 ajouter [17]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 1/1 est_mot_vide [7]
|
||||
[15] 0.0 0.00 0.00 1 initialiser_mots_vides [15]
|
||||
0.00 0.00 60/11729593 hacher_mot [10]
|
||||
0.00 0.00 28/14463795 egales [8]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 135315/135315 retablir_tas [18]
|
||||
[16] 0.0 0.00 0.00 135315 doit_echanger [16]
|
||||
0.00 0.00 6706/6706 comparer [19]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 6099/27033 construire_rapport [21]
|
||||
0.00 0.00 20934/27033 generer_vocabulaire [14]
|
||||
[17] 0.0 0.00 0.00 27033 ajouter [17]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 9146/9146 trier_entrees [26]
|
||||
[18] 0.0 0.00 0.00 9146 retablir_tas [18]
|
||||
0.00 0.00 135315/135315 doit_echanger [16]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 6706/6706 doit_echanger [16]
|
||||
[19] 0.0 0.00 0.00 6706 comparer [19]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 6098/6098 compter_mot [4]
|
||||
[20] 0.0 0.00 0.00 6098 copier [20]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 1/1 main [1]
|
||||
[21] 0.0 0.00 0.00 1 construire_rapport [21]
|
||||
0.00 0.00 6099/27033 ajouter [17]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 1/1 main [1]
|
||||
[22] 0.0 0.00 0.00 1 ecart_type_longueur [22]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 1/1 main [1]
|
||||
[23] 0.0 0.00 0.00 1 empreinte [23]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 1/1 main [1]
|
||||
[24] 0.0 0.00 0.00 1 longueur_moyenne [24]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 1/1 main [1]
|
||||
[25] 0.0 0.00 0.00 1 racine [25]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 1/1 main [1]
|
||||
[26] 0.0 0.00 0.00 1 trier_entrees [26]
|
||||
0.00 0.00 9146/9146 retablir_tas [18]
|
||||
-----------------------------------------------
|
||||
|
||||
Index by function name
|
||||
|
||||
[12] _init [20] copier [10] hacher_mot
|
||||
[17] ajouter [11] decouper_lignes [15] initialiser_mots_vides
|
||||
[13] alea [16] doit_echanger [24] longueur_moyenne
|
||||
[5] analyser_bigrammes [22] ecart_type_longueur [9] normaliser_ligne
|
||||
[6] chercher_mot [8] egales [25] racine
|
||||
[19] comparer [23] empreinte [18] retablir_tas
|
||||
[4] compter_mot [7] est_mot_vide [26] trier_entrees
|
||||
[2] compter_mots_ligne [3] generer_texte
|
||||
[21] construire_rapport [14] generer_vocabulaire
|
||||
@@ -0,0 +1,160 @@
|
||||
Flat profile:
|
||||
|
||||
Each sample counts as 0.01 seconds.
|
||||
% cumulative self self total
|
||||
time seconds seconds calls ms/call ms/call name
|
||||
17.58 0.29 0.29 1 290.00 290.00 analyser_bigrammes
|
||||
16.97 0.57 0.28 1 280.00 280.00 decouper_lignes
|
||||
13.94 0.80 0.23 869827 0.00 0.00 compter_mots_ligne
|
||||
13.33 1.02 0.22 1 220.00 259.97 generer_texte
|
||||
12.73 1.23 0.21 14463795 0.00 0.00 egales
|
||||
6.67 1.34 0.11 869827 0.00 0.00 normaliser_ligne
|
||||
4.85 1.42 0.08 11729593 0.00 0.00 hacher_mot
|
||||
4.24 1.49 0.07 5998884 0.00 0.00 chercher_mot
|
||||
3.33 1.54 0.06 10000000 0.00 0.00 est_mot_vide
|
||||
2.42 1.58 0.04 36026819 0.00 0.00 alea
|
||||
2.42 1.62 0.04 5998884 0.00 0.00 compter_mot
|
||||
1.21 1.65 0.02 main
|
||||
0.30 1.65 0.01 1 5.00 5.00 initialiser_mots_vides
|
||||
0.00 1.65 0.00 135315 0.00 0.00 doit_echanger
|
||||
0.00 1.65 0.00 27033 0.00 0.00 ajouter
|
||||
0.00 1.65 0.00 9146 0.00 0.00 retablir_tas
|
||||
0.00 1.65 0.00 6706 0.00 0.00 comparer
|
||||
0.00 1.65 0.00 6098 0.00 0.00 copier
|
||||
0.00 1.65 0.00 1 0.00 0.00 construire_rapport
|
||||
0.00 1.65 0.00 1 0.00 0.00 ecart_type_longueur
|
||||
0.00 1.65 0.00 1 0.00 0.00 empreinte
|
||||
0.00 1.65 0.00 1 0.00 0.03 generer_vocabulaire
|
||||
0.00 1.65 0.00 1 0.00 0.00 longueur_moyenne
|
||||
0.00 1.65 0.00 1 0.00 0.00 racine
|
||||
0.00 1.65 0.00 1 0.00 0.00 trier_entrees
|
||||
|
||||
Call graph
|
||||
|
||||
|
||||
granularity: each sample hit covers 4 byte(s) for 0.61% of 1.65 seconds
|
||||
|
||||
index % time self children called name
|
||||
<spontaneous>
|
||||
[1] 100.0 0.02 1.63 main [1]
|
||||
0.23 0.46 869827/869827 compter_mots_ligne [2]
|
||||
0.29 0.00 1/1 analyser_bigrammes [3]
|
||||
0.28 0.00 1/1 decouper_lignes [4]
|
||||
0.22 0.04 1/1 generer_texte [5]
|
||||
0.11 0.00 869827/869827 normaliser_ligne [10]
|
||||
0.00 0.00 1/1 generer_vocabulaire [14]
|
||||
0.00 0.00 1/1 trier_entrees [25]
|
||||
0.00 0.00 1/1 longueur_moyenne [23]
|
||||
0.00 0.00 1/1 ecart_type_longueur [21]
|
||||
0.00 0.00 1/1 racine [24]
|
||||
0.00 0.00 1/1 construire_rapport [20]
|
||||
0.00 0.00 1/1 empreinte [22]
|
||||
-----------------------------------------------
|
||||
0.23 0.46 869827/869827 main [1]
|
||||
[2] 41.8 0.23 0.46 869827 compter_mots_ligne [2]
|
||||
0.04 0.20 5998884/5998884 compter_mot [6]
|
||||
0.06 0.16 10000000/10000000 est_mot_vide [7]
|
||||
-----------------------------------------------
|
||||
0.29 0.00 1/1 main [1]
|
||||
[3] 17.6 0.29 0.00 1 analyser_bigrammes [3]
|
||||
-----------------------------------------------
|
||||
0.28 0.00 1/1 main [1]
|
||||
[4] 17.0 0.28 0.00 1 decouper_lignes [4]
|
||||
-----------------------------------------------
|
||||
0.22 0.04 1/1 main [1]
|
||||
[5] 15.8 0.22 0.04 1 generer_texte [5]
|
||||
0.04 0.00 35998885/36026819 alea [12]
|
||||
-----------------------------------------------
|
||||
0.04 0.20 5998884/5998884 compter_mots_ligne [2]
|
||||
[6] 14.7 0.04 0.20 5998884 compter_mot [6]
|
||||
0.07 0.13 5998884/5998884 chercher_mot [9]
|
||||
0.00 0.00 6098/6098 copier [19]
|
||||
-----------------------------------------------
|
||||
0.06 0.16 10000000/10000000 compter_mots_ligne [2]
|
||||
[7] 13.1 0.06 0.16 10000000 est_mot_vide [7]
|
||||
0.12 0.00 8116707/14463795 egales [8]
|
||||
0.04 0.00 5730649/11729593 hacher_mot [11]
|
||||
0.01 0.00 1/1 initialiser_mots_vides [13]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 28/14463795 initialiser_mots_vides [13]
|
||||
0.09 0.00 6347060/14463795 chercher_mot [9]
|
||||
0.12 0.00 8116707/14463795 est_mot_vide [7]
|
||||
[8] 12.7 0.21 0.00 14463795 egales [8]
|
||||
-----------------------------------------------
|
||||
0.07 0.13 5998884/5998884 compter_mot [6]
|
||||
[9] 12.3 0.07 0.13 5998884 chercher_mot [9]
|
||||
0.09 0.00 6347060/14463795 egales [8]
|
||||
0.04 0.00 5998884/11729593 hacher_mot [11]
|
||||
-----------------------------------------------
|
||||
0.11 0.00 869827/869827 main [1]
|
||||
[10] 6.7 0.11 0.00 869827 normaliser_ligne [10]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 60/11729593 initialiser_mots_vides [13]
|
||||
0.04 0.00 5730649/11729593 est_mot_vide [7]
|
||||
0.04 0.00 5998884/11729593 chercher_mot [9]
|
||||
[11] 4.8 0.08 0.00 11729593 hacher_mot [11]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 27934/36026819 generer_vocabulaire [14]
|
||||
0.04 0.00 35998885/36026819 generer_texte [5]
|
||||
[12] 2.4 0.04 0.00 36026819 alea [12]
|
||||
-----------------------------------------------
|
||||
0.01 0.00 1/1 est_mot_vide [7]
|
||||
[13] 0.3 0.01 0.00 1 initialiser_mots_vides [13]
|
||||
0.00 0.00 60/11729593 hacher_mot [11]
|
||||
0.00 0.00 28/14463795 egales [8]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 1/1 main [1]
|
||||
[14] 0.0 0.00 0.00 1 generer_vocabulaire [14]
|
||||
0.00 0.00 27934/36026819 alea [12]
|
||||
0.00 0.00 20934/27033 ajouter [16]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 135315/135315 retablir_tas [17]
|
||||
[15] 0.0 0.00 0.00 135315 doit_echanger [15]
|
||||
0.00 0.00 6706/6706 comparer [18]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 6099/27033 construire_rapport [20]
|
||||
0.00 0.00 20934/27033 generer_vocabulaire [14]
|
||||
[16] 0.0 0.00 0.00 27033 ajouter [16]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 9146/9146 trier_entrees [25]
|
||||
[17] 0.0 0.00 0.00 9146 retablir_tas [17]
|
||||
0.00 0.00 135315/135315 doit_echanger [15]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 6706/6706 doit_echanger [15]
|
||||
[18] 0.0 0.00 0.00 6706 comparer [18]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 6098/6098 compter_mot [6]
|
||||
[19] 0.0 0.00 0.00 6098 copier [19]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 1/1 main [1]
|
||||
[20] 0.0 0.00 0.00 1 construire_rapport [20]
|
||||
0.00 0.00 6099/27033 ajouter [16]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 1/1 main [1]
|
||||
[21] 0.0 0.00 0.00 1 ecart_type_longueur [21]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 1/1 main [1]
|
||||
[22] 0.0 0.00 0.00 1 empreinte [22]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 1/1 main [1]
|
||||
[23] 0.0 0.00 0.00 1 longueur_moyenne [23]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 1/1 main [1]
|
||||
[24] 0.0 0.00 0.00 1 racine [24]
|
||||
-----------------------------------------------
|
||||
0.00 0.00 1/1 main [1]
|
||||
[25] 0.0 0.00 0.00 1 trier_entrees [25]
|
||||
0.00 0.00 9146/9146 retablir_tas [17]
|
||||
-----------------------------------------------
|
||||
|
||||
Index by function name
|
||||
|
||||
[16] ajouter [4] decouper_lignes [13] initialiser_mots_vides
|
||||
[12] alea [15] doit_echanger [23] longueur_moyenne
|
||||
[3] analyser_bigrammes [21] ecart_type_longueur [1] main
|
||||
[9] chercher_mot [8] egales [10] normaliser_ligne
|
||||
[18] comparer [22] empreinte [24] racine
|
||||
[6] compter_mot [7] est_mot_vide [17] retablir_tas
|
||||
[2] compter_mots_ligne [5] generer_texte [25] trier_entrees
|
||||
[20] construire_rapport [14] generer_vocabulaire
|
||||
[19] copier [11] hacher_mot
|
||||
File diff suppressed because it is too large
Load Diff
+8
-9
@@ -24,7 +24,7 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#define NB_MOTS_TEXTE 250000
|
||||
#define NB_MOTS_TEXTE 10000000
|
||||
#define NB_MOTS_VOCAB 7000
|
||||
#define TAILLE_MOT 32
|
||||
#define MAX_MOTS_UNIQUES 20000
|
||||
@@ -172,7 +172,10 @@ char *generer_texte(char **vocab, int nb_mots)
|
||||
/* Découpage et normalisation */
|
||||
/* ------------------------------------------------------------------------ */
|
||||
|
||||
char **decouper_lignes(const char *texte, int *nb_lignes)
|
||||
/* Remplace les '\n' par '\0' et renvoie des pointeurs dans texte.
|
||||
* Les lignes restent valides tant que texte existe : ne pas les libérer
|
||||
* individuellement. Seules les lignes terminées par '\n' sont retournées. */
|
||||
char **decouper_lignes(char *texte, int *nb_lignes)
|
||||
{
|
||||
int capacite = 1024;
|
||||
char **lignes = malloc(capacite * sizeof(char *));
|
||||
@@ -181,15 +184,12 @@ char **decouper_lignes(const char *texte, int *nb_lignes)
|
||||
|
||||
for (int i = 0; texte[i] != '\0'; i++) {
|
||||
if (texte[i] == '\n') {
|
||||
int taille = i - debut;
|
||||
if (n == capacite) {
|
||||
capacite *= 2;
|
||||
lignes = realloc(lignes, capacite * sizeof(char *));
|
||||
}
|
||||
lignes[n] = malloc(taille + 1);
|
||||
for (int j = 0; j < taille; j++)
|
||||
lignes[n][j] = texte[debut + j];
|
||||
lignes[n][taille] = '\0';
|
||||
lignes[n] = texte + debut;
|
||||
texte[i] = '\0';
|
||||
n++;
|
||||
debut = i + 1;
|
||||
}
|
||||
@@ -549,8 +549,7 @@ int main(void)
|
||||
|
||||
free(rapport);
|
||||
free(table);
|
||||
for (int i = 0; i < nb_lignes; i++)
|
||||
free(lignes[i]);
|
||||
/* Les caractères des lignes appartiennent au tampon texte. */
|
||||
free(lignes);
|
||||
free(texte);
|
||||
for (int i = 0; i < NB_MOTS_VOCAB; i++)
|
||||
|
||||
Reference in New Issue
Block a user