16 Commits

Author SHA1 Message Date
rabot 875af6fe9e Organise le dépôt et numérote les profils par étape 2026-10-07 15:48:27 +02:00
rabot 19ad9b7b33 Optimise la normalisation avec une table de conversion 2026-10-07 15:43:48 +02:00
rabot 2abe610d58 Woops 2026-10-07 13:59:42 +02:00
rabot 13318119ae Optimise la fonction est_mot_vide en remplaçant la recherche linéaire par un index de hachage, réduisant ainsi le temps de recherche et améliorant les performances globales. 2026-10-07 13:59:32 +02:00
rabot e3076e46aa Optimise la fonction d'analyse des bigrammes en réduisant les vérifications et en normalisant les lignes 2026-10-07 13:49:42 +02:00
rabot 2878461ebd Compte rendu final 2026-10-07 12:50:25 +02:00
rabot c9b14f4c2e Update rapport 2026-10-07 12:42:56 +02:00
rabot ed2e1cd102 Compte rendu 2026-10-07 12:37:15 +02:00
rabot e99abeb267 Woops 2026-10-07 12:21:17 +02:00
rabot 57c9ce933b Remplacement du tri à bulles par un tri par tas pour améliorer les performances de tri 2026-10-07 12:20:50 +02:00
rabot 1c4405c75e Optimisation des performances en mémorisant la longueur des mots et en supprimant les parcours redondants 2026-10-07 12:12:56 +02:00
rabot 57aaec48d0 Remplacement de la recherche dichotomique par une table de hachage 2026-10-07 11:51:31 +02:00
rabot d3f19871d7 Optimisation de l'écart-type de longueur en réutilisant la moyenne calculée 2026-10-07 11:39:55 +02:00
rabot be387e2066 Optimisé chercher_mot par recherche dichotomique 2026-10-07 11:30:14 +02:00
rabot 55320bdfea Update README.md 2026-10-07 10:40:06 +02:00
rabot e6b452bdbe Fix erreur du prof 2026-10-07 10:33:37 +02:00
23 changed files with 8636 additions and 65 deletions
+7
View File
@@ -0,0 +1,7 @@
# Exécutables, rapports et profils produits localement.
/build/
/out/
/analyseur
/rapport.txt
/gmon.out
*.o
+82
View File
@@ -0,0 +1,82 @@
# Compte rendu — Optimisation de l'analyseur de mots
**R5.A.04 — Qualité algorithmique**
**Adrien RABOT — Théo ANASTASIO**
## 1. Objectif et méthode
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 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.
## 2. Analyse et pistes prioritaires
Le profil initial conduit aux priorités suivantes, classées par gain attendu :
1. **Accélérer la recherche des mots.** La recherche linéaire provoque
296 656 203 appels à `egales`. Une recherche dichotomique ou une table
de hachage permet de réduire ces comparaisons.
2. **Calculer la moyenne une seule fois.** `longueur_moyenne` est appelée
5 867 fois, car la variance recalcule la même moyenne pour chaque mot.
3. **Supprimer les parcours répétés des chaînes.** `longueur` est appelée
36 009 819 fois au total. Mémoriser les longueurs et les positions de fin
évite de reparcourir les mots, les lignes et le rapport.
4. **Remplacer le tri à bulles.** Ses 17 202 045 appels à `doit_echanger`
justifient un tri en O(n log n).
## 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 é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é |
| --- | --- | ---: | ---: | ---: |
| Recherche dichotomique | Tableau maintenu trié, recherche en O(log n) | 2,80 s | 1,45 s | ≈ 48 % |
| Moyenne | Un seul calcul, transmis au calcul de variance | 1,46 s | 0,88 s | ≈ 40 % |
| 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 % |
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
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 | 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 |
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`**.
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).
+32
View File
@@ -0,0 +1,32 @@
CC = gcc
CFLAGS ?= -std=c11 -Wall -Wextra -Wpedantic -O0
SOURCE = src/analyseur.c
PROGRAMME = build/analyseur
PROGRAMME_PROFIL = build/profil/analyseur
.PHONY: all run check profile clean
all: $(PROGRAMME)
$(PROGRAMME): $(SOURCE) Makefile
mkdir -p $(@D)
$(CC) $(CPPFLAGS) $(CFLAGS) $< -o $@ $(LDFLAGS) $(LDLIBS)
run: $(PROGRAMME)
cd build && ./analyseur
check: run
cmp resultats/rapport_reference.txt build/rapport.txt
$(PROGRAMME_PROFIL): $(SOURCE) Makefile
mkdir -p $(@D)
$(CC) $(CPPFLAGS) $(CFLAGS) -pg $< -o $@ $(LDFLAGS) $(LDLIBS)
profile: $(PROGRAMME_PROFIL)
cd build/profil && ./analyseur
cd build/profil && gprof -b ./analyseur gmon.out > profil.txt
@printf 'Profil disponible dans build/profil/profil.txt\n'
clean:
rm -rf build
+52
View File
@@ -0,0 +1,52 @@
# 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`**.
## Organisation
```text
src/analyseur.c Programme principal
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/mesures/ Mesures brutes CSV et conditions des expériences
resultats/rapport_reference.txt Rapport attendu
COMPTE_RENDU.md Compte rendu noté
build/ Fichiers générés localement, ignorés par Git
```
## Compiler et vérifier
GCC, GNU Make et `gprof` sont nécessaires pour les commandes de profiling.
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 profile # Produire build/profil/profil.txt avec -pg et gprof
make clean # Supprimer les fichiers générés de build/
```
Pour mesurer le temps du programme après compilation :
```bash
cd build
time ./analyseur
```
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/`.
## Documents et résultats
- [Compte rendu](COMPTE_RENDU.md)
- [Consignes du TD](docs/CONSIGNES.md) et [support PDF](docs/R5A04_Profiling_MM.pdf)
- [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)
+45
View File
@@ -0,0 +1,45 @@
# TD — Consignes
## Travail demandé
1. **Mesurer**
Compilez le programme sans `-pg`, lancez-le avec `time`, puis notez le
temps d'exécution et l'empreinte mémoire.
2. **Profiler**
Recompilez en `-O0` avec `-pg`, lancez le programme, puis générez le
profil dans `profil_avant.txt` avec `gprof`.
3. **Analyser**
Étudiez le profil plat et le graphe d'appels : où le temps est-il passé,
et pourquoi ?
4. **Proposer**
Listez les pistes d'amélioration, classées par gain attendu.
5. **Optimiser**
Réalisez une optimisation par commit. L'empreinte mémoire doit rester
identique.
6. **Valider**
Reprofilez le programme dans `profil_apres.txt` et chiffrez le gain
obtenu.
## Compte rendu noté
Le fichier `COMPTE_RENDU.md` doit être présent à la racine de votre fork.
Il doit contenir :
- les temps avant et après optimisation ;
- l'analyse du profil ;
- les pistes d'amélioration proposées ;
- les optimisations réalisées ;
- les gains mesurés.
> **Contrôle continu** — Le compte rendu est évalué dans le cadre du TD.
+699
View File
File diff suppressed because it is too large Load Diff
View File
+32
View File
@@ -0,0 +1,32 @@
# 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/`.
| Étape | Profil | Version du code |
| --- | --- | --- |
| 00 — Programme initial | [00_initial.txt](profils/00_initial.txt) | `6c6f358` |
| 01 — Recherche dichotomique | [01_dichotomie.txt](profils/01_dichotomie.txt) | `be387e2` |
| 02 — Moyenne calculée une fois | [02_moyenne.txt](profils/02_moyenne.txt) | `d3f1987` |
| 03 — Recherche par hachage | [03_hachage.txt](profils/03_hachage.txt) | `57aaec4` |
| 04 — Longueurs et positions de fin | [04_longueurs.txt](profils/04_longueurs.txt) | `1c4405c` |
| 05 — Tri par tas | [05_tri.txt](profils/05_tri.txt) | `57c9ce9` |
| 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` |
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.
La [comparaison de normalisation](mesures/comparaison_normalisation_meme_pc.csv)
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.
Les commandes historiques et les autres mesures sont décrites dans le
[journal](../docs/notes.md). Chaque gain de temps doit être calculé à partir
de versions exécutées dans les mêmes conditions sur la même machine.
@@ -0,0 +1,101 @@
paire;ordre;version;reel_s;cpu_s;utilisateur_s;systeme_s
1;1;est_mot_vide;0.056491233;0.056122000;0.056122000;0.000000000
1;2;normalisation;0.051129444;0.050743000;0.047569000;0.003174000
2;1;normalisation;0.052859973;0.052213000;0.052213000;0.000000000
2;2;est_mot_vide;0.056553175;0.056188000;0.049163000;0.007025000
3;1;est_mot_vide;0.056646180;0.056260000;0.056260000;0.000000000
3;2;normalisation;0.050820813;0.050419000;0.047057000;0.003362000
4;1;normalisation;0.050511655;0.050148000;0.050148000;0.000000000
4;2;est_mot_vide;0.057633857;0.057267000;0.057267000;0.000000000
5;1;est_mot_vide;0.058931013;0.058517000;0.058517000;0.000000000
5;2;normalisation;0.050483512;0.050130000;0.050130000;0.000000000
6;1;normalisation;0.050571728;0.050031000;0.050031000;0.000000000
6;2;est_mot_vide;0.056469042;0.055864000;0.055864000;0.000000000
7;1;est_mot_vide;0.056786315;0.056209000;0.056209000;0.000000000
7;2;normalisation;0.054489662;0.054079000;0.054079000;0.000000000
8;1;normalisation;0.053364305;0.052960000;0.052960000;0.000000000
8;2;est_mot_vide;0.059938709;0.059504000;0.056200000;0.003304000
9;1;est_mot_vide;0.056927608;0.056355000;0.053024000;0.003331000
9;2;normalisation;0.050743650;0.050397000;0.050397000;0.000000000
10;1;normalisation;0.051437591;0.051059000;0.051059000;0.000000000
10;2;est_mot_vide;0.056612828;0.056236000;0.056236000;0.000000000
11;1;est_mot_vide;0.056272508;0.055704000;0.055704000;0.000000000
11;2;normalisation;0.050365767;0.050021000;0.046684000;0.003337000
12;1;normalisation;0.050671909;0.050125000;0.050125000;0.000000000
12;2;est_mot_vide;0.056635849;0.056280000;0.056280000;0.000000000
13;1;est_mot_vide;0.056769250;0.056186000;0.056186000;0.000000000
13;2;normalisation;0.050474641;0.050140000;0.050140000;0.000000000
14;1;normalisation;0.051163379;0.050578000;0.050578000;0.000000000
14;2;est_mot_vide;0.056933057;0.056577000;0.053247000;0.003330000
15;1;est_mot_vide;0.057398894;0.056795000;0.056795000;0.000000000
15;2;normalisation;0.050772062;0.050235000;0.050235000;0.000000000
16;1;normalisation;0.050913189;0.050575000;0.050575000;0.000000000
16;2;est_mot_vide;0.056655224;0.056318000;0.056318000;0.000000000
17;1;est_mot_vide;0.056525765;0.056190000;0.056190000;0.000000000
17;2;normalisation;0.050352528;0.050011000;0.050011000;0.000000000
18;1;normalisation;0.050842096;0.050096000;0.043787000;0.006309000
18;2;est_mot_vide;0.057116281;0.056570000;0.053229000;0.003341000
19;1;est_mot_vide;0.057103442;0.056740000;0.056740000;0.000000000
19;2;normalisation;0.050779039;0.050208000;0.046845000;0.003363000
20;1;normalisation;0.050054952;0.049702000;0.049702000;0.000000000
20;2;est_mot_vide;0.058944302;0.058092000;0.058092000;0.000000000
21;1;est_mot_vide;0.056722629;0.056347000;0.056347000;0.000000000
21;2;normalisation;0.050731609;0.050375000;0.047014000;0.003361000
22;1;normalisation;0.050819285;0.050259000;0.047104000;0.003155000
22;2;est_mot_vide;0.056630778;0.056063000;0.056063000;0.000000000
23;1;est_mot_vide;0.057257033;0.056642000;0.056642000;0.000000000
23;2;normalisation;0.051949088;0.051599000;0.048158000;0.003441000
24;1;normalisation;0.051005800;0.050636000;0.044301000;0.006335000
24;2;est_mot_vide;0.057043455;0.056271000;0.056271000;0.000000000
25;1;est_mot_vide;0.057602567;0.056820000;0.056820000;0.000000000
25;2;normalisation;0.050556449;0.050000000;0.050000000;0.000000000
26;1;normalisation;0.050617535;0.050016000;0.046668000;0.003348000
26;2;est_mot_vide;0.056347331;0.055776000;0.055776000;0.000000000
27;1;est_mot_vide;0.056876707;0.056082000;0.052755000;0.003327000
27;2;normalisation;0.050732818;0.049943000;0.046588000;0.003355000
28;1;normalisation;0.050696128;0.050356000;0.050356000;0.000000000
28;2;est_mot_vide;0.057392773;0.056837000;0.056837000;0.000000000
29;1;est_mot_vide;0.057540365;0.056687000;0.050339000;0.006348000
29;2;normalisation;0.050629883;0.050266000;0.050266000;0.000000000
30;1;normalisation;0.050633852;0.050301000;0.046944000;0.003357000
30;2;est_mot_vide;0.057387534;0.056604000;0.053263000;0.003341000
31;1;est_mot_vide;0.056705212;0.056221000;0.056221000;0.000000000
31;2;normalisation;0.051605342;0.050607000;0.050607000;0.000000000
32;1;normalisation;0.050774977;0.050195000;0.046832000;0.003363000
32;2;est_mot_vide;0.057347698;0.056481000;0.056481000;0.000000000
33;1;est_mot_vide;0.057314656;0.056493000;0.053142000;0.003351000
33;2;normalisation;0.051035417;0.050702000;0.047319000;0.003383000
34;1;normalisation;0.051096606;0.050325000;0.050325000;0.000000000
34;2;est_mot_vide;0.056984515;0.056397000;0.053065000;0.003332000
35;1;est_mot_vide;0.056948057;0.056378000;0.049735000;0.006643000
35;2;normalisation;0.050945416;0.050349000;0.047188000;0.003161000
36;1;normalisation;0.050665690;0.050325000;0.050325000;0.000000000
36;2;est_mot_vide;0.056564751;0.056024000;0.056024000;0.000000000
37;1;est_mot_vide;0.056814287;0.056267000;0.056267000;0.000000000
37;2;normalisation;0.050693901;0.050345000;0.050345000;0.000000000
38;1;normalisation;0.051073204;0.050687000;0.047516000;0.003171000
38;2;est_mot_vide;0.056708081;0.056123000;0.052807000;0.003316000
39;1;est_mot_vide;0.058150167;0.057529000;0.054130000;0.003399000
39;2;normalisation;0.051624538;0.051171000;0.047760000;0.003411000
40;1;normalisation;0.050851577;0.050450000;0.047083000;0.003367000
40;2;est_mot_vide;0.056863893;0.056294000;0.056294000;0.000000000
41;1;est_mot_vide;0.056938046;0.056313000;0.049663000;0.006650000
41;2;normalisation;0.051268160;0.050718000;0.050718000;0.000000000
42;1;normalisation;0.050889004;0.050469000;0.050469000;0.000000000
42;2;est_mot_vide;0.056899960;0.056519000;0.056519000;0.000000000
43;1;est_mot_vide;0.056661776;0.056094000;0.056094000;0.000000000
43;2;normalisation;0.051071801;0.050505000;0.050505000;0.000000000
44;1;normalisation;0.051212294;0.050659000;0.050659000;0.000000000
44;2;est_mot_vide;0.056953281;0.056597000;0.053266000;0.003331000
45;1;est_mot_vide;0.057247562;0.056689000;0.056689000;0.000000000
45;2;normalisation;0.051919210;0.051286000;0.047848000;0.003438000
46;1;normalisation;0.053911622;0.053561000;0.050211000;0.003350000
46;2;est_mot_vide;0.057280343;0.056880000;0.056880000;0.000000000
47;1;est_mot_vide;0.057210951;0.056736000;0.050053000;0.006683000
47;2;normalisation;0.050836595;0.050275000;0.050275000;0.000000000
48;1;normalisation;0.050400129;0.050021000;0.046687000;0.003334000
48;2;est_mot_vide;0.056861357;0.056310000;0.056310000;0.000000000
49;1;est_mot_vide;0.056884618;0.056497000;0.053181000;0.003316000
49;2;normalisation;0.050721396;0.050345000;0.046993000;0.003352000
50;1;normalisation;0.050842075;0.050114000;0.050114000;0.000000000
50;2;est_mot_vide;0.056320156;0.055765000;0.055765000;0.000000000
1 paire ordre version reel_s cpu_s utilisateur_s systeme_s
2 1 1 est_mot_vide 0.056491233 0.056122000 0.056122000 0.000000000
3 1 2 normalisation 0.051129444 0.050743000 0.047569000 0.003174000
4 2 1 normalisation 0.052859973 0.052213000 0.052213000 0.000000000
5 2 2 est_mot_vide 0.056553175 0.056188000 0.049163000 0.007025000
6 3 1 est_mot_vide 0.056646180 0.056260000 0.056260000 0.000000000
7 3 2 normalisation 0.050820813 0.050419000 0.047057000 0.003362000
8 4 1 normalisation 0.050511655 0.050148000 0.050148000 0.000000000
9 4 2 est_mot_vide 0.057633857 0.057267000 0.057267000 0.000000000
10 5 1 est_mot_vide 0.058931013 0.058517000 0.058517000 0.000000000
11 5 2 normalisation 0.050483512 0.050130000 0.050130000 0.000000000
12 6 1 normalisation 0.050571728 0.050031000 0.050031000 0.000000000
13 6 2 est_mot_vide 0.056469042 0.055864000 0.055864000 0.000000000
14 7 1 est_mot_vide 0.056786315 0.056209000 0.056209000 0.000000000
15 7 2 normalisation 0.054489662 0.054079000 0.054079000 0.000000000
16 8 1 normalisation 0.053364305 0.052960000 0.052960000 0.000000000
17 8 2 est_mot_vide 0.059938709 0.059504000 0.056200000 0.003304000
18 9 1 est_mot_vide 0.056927608 0.056355000 0.053024000 0.003331000
19 9 2 normalisation 0.050743650 0.050397000 0.050397000 0.000000000
20 10 1 normalisation 0.051437591 0.051059000 0.051059000 0.000000000
21 10 2 est_mot_vide 0.056612828 0.056236000 0.056236000 0.000000000
22 11 1 est_mot_vide 0.056272508 0.055704000 0.055704000 0.000000000
23 11 2 normalisation 0.050365767 0.050021000 0.046684000 0.003337000
24 12 1 normalisation 0.050671909 0.050125000 0.050125000 0.000000000
25 12 2 est_mot_vide 0.056635849 0.056280000 0.056280000 0.000000000
26 13 1 est_mot_vide 0.056769250 0.056186000 0.056186000 0.000000000
27 13 2 normalisation 0.050474641 0.050140000 0.050140000 0.000000000
28 14 1 normalisation 0.051163379 0.050578000 0.050578000 0.000000000
29 14 2 est_mot_vide 0.056933057 0.056577000 0.053247000 0.003330000
30 15 1 est_mot_vide 0.057398894 0.056795000 0.056795000 0.000000000
31 15 2 normalisation 0.050772062 0.050235000 0.050235000 0.000000000
32 16 1 normalisation 0.050913189 0.050575000 0.050575000 0.000000000
33 16 2 est_mot_vide 0.056655224 0.056318000 0.056318000 0.000000000
34 17 1 est_mot_vide 0.056525765 0.056190000 0.056190000 0.000000000
35 17 2 normalisation 0.050352528 0.050011000 0.050011000 0.000000000
36 18 1 normalisation 0.050842096 0.050096000 0.043787000 0.006309000
37 18 2 est_mot_vide 0.057116281 0.056570000 0.053229000 0.003341000
38 19 1 est_mot_vide 0.057103442 0.056740000 0.056740000 0.000000000
39 19 2 normalisation 0.050779039 0.050208000 0.046845000 0.003363000
40 20 1 normalisation 0.050054952 0.049702000 0.049702000 0.000000000
41 20 2 est_mot_vide 0.058944302 0.058092000 0.058092000 0.000000000
42 21 1 est_mot_vide 0.056722629 0.056347000 0.056347000 0.000000000
43 21 2 normalisation 0.050731609 0.050375000 0.047014000 0.003361000
44 22 1 normalisation 0.050819285 0.050259000 0.047104000 0.003155000
45 22 2 est_mot_vide 0.056630778 0.056063000 0.056063000 0.000000000
46 23 1 est_mot_vide 0.057257033 0.056642000 0.056642000 0.000000000
47 23 2 normalisation 0.051949088 0.051599000 0.048158000 0.003441000
48 24 1 normalisation 0.051005800 0.050636000 0.044301000 0.006335000
49 24 2 est_mot_vide 0.057043455 0.056271000 0.056271000 0.000000000
50 25 1 est_mot_vide 0.057602567 0.056820000 0.056820000 0.000000000
51 25 2 normalisation 0.050556449 0.050000000 0.050000000 0.000000000
52 26 1 normalisation 0.050617535 0.050016000 0.046668000 0.003348000
53 26 2 est_mot_vide 0.056347331 0.055776000 0.055776000 0.000000000
54 27 1 est_mot_vide 0.056876707 0.056082000 0.052755000 0.003327000
55 27 2 normalisation 0.050732818 0.049943000 0.046588000 0.003355000
56 28 1 normalisation 0.050696128 0.050356000 0.050356000 0.000000000
57 28 2 est_mot_vide 0.057392773 0.056837000 0.056837000 0.000000000
58 29 1 est_mot_vide 0.057540365 0.056687000 0.050339000 0.006348000
59 29 2 normalisation 0.050629883 0.050266000 0.050266000 0.000000000
60 30 1 normalisation 0.050633852 0.050301000 0.046944000 0.003357000
61 30 2 est_mot_vide 0.057387534 0.056604000 0.053263000 0.003341000
62 31 1 est_mot_vide 0.056705212 0.056221000 0.056221000 0.000000000
63 31 2 normalisation 0.051605342 0.050607000 0.050607000 0.000000000
64 32 1 normalisation 0.050774977 0.050195000 0.046832000 0.003363000
65 32 2 est_mot_vide 0.057347698 0.056481000 0.056481000 0.000000000
66 33 1 est_mot_vide 0.057314656 0.056493000 0.053142000 0.003351000
67 33 2 normalisation 0.051035417 0.050702000 0.047319000 0.003383000
68 34 1 normalisation 0.051096606 0.050325000 0.050325000 0.000000000
69 34 2 est_mot_vide 0.056984515 0.056397000 0.053065000 0.003332000
70 35 1 est_mot_vide 0.056948057 0.056378000 0.049735000 0.006643000
71 35 2 normalisation 0.050945416 0.050349000 0.047188000 0.003161000
72 36 1 normalisation 0.050665690 0.050325000 0.050325000 0.000000000
73 36 2 est_mot_vide 0.056564751 0.056024000 0.056024000 0.000000000
74 37 1 est_mot_vide 0.056814287 0.056267000 0.056267000 0.000000000
75 37 2 normalisation 0.050693901 0.050345000 0.050345000 0.000000000
76 38 1 normalisation 0.051073204 0.050687000 0.047516000 0.003171000
77 38 2 est_mot_vide 0.056708081 0.056123000 0.052807000 0.003316000
78 39 1 est_mot_vide 0.058150167 0.057529000 0.054130000 0.003399000
79 39 2 normalisation 0.051624538 0.051171000 0.047760000 0.003411000
80 40 1 normalisation 0.050851577 0.050450000 0.047083000 0.003367000
81 40 2 est_mot_vide 0.056863893 0.056294000 0.056294000 0.000000000
82 41 1 est_mot_vide 0.056938046 0.056313000 0.049663000 0.006650000
83 41 2 normalisation 0.051268160 0.050718000 0.050718000 0.000000000
84 42 1 normalisation 0.050889004 0.050469000 0.050469000 0.000000000
85 42 2 est_mot_vide 0.056899960 0.056519000 0.056519000 0.000000000
86 43 1 est_mot_vide 0.056661776 0.056094000 0.056094000 0.000000000
87 43 2 normalisation 0.051071801 0.050505000 0.050505000 0.000000000
88 44 1 normalisation 0.051212294 0.050659000 0.050659000 0.000000000
89 44 2 est_mot_vide 0.056953281 0.056597000 0.053266000 0.003331000
90 45 1 est_mot_vide 0.057247562 0.056689000 0.056689000 0.000000000
91 45 2 normalisation 0.051919210 0.051286000 0.047848000 0.003438000
92 46 1 normalisation 0.053911622 0.053561000 0.050211000 0.003350000
93 46 2 est_mot_vide 0.057280343 0.056880000 0.056880000 0.000000000
94 47 1 est_mot_vide 0.057210951 0.056736000 0.050053000 0.006683000
95 47 2 normalisation 0.050836595 0.050275000 0.050275000 0.000000000
96 48 1 normalisation 0.050400129 0.050021000 0.046687000 0.003334000
97 48 2 est_mot_vide 0.056861357 0.056310000 0.056310000 0.000000000
98 49 1 est_mot_vide 0.056884618 0.056497000 0.053181000 0.003316000
99 49 2 normalisation 0.050721396 0.050345000 0.046993000 0.003352000
100 50 1 normalisation 0.050842075 0.050114000 0.050114000 0.000000000
101 50 2 est_mot_vide 0.056320156 0.055765000 0.055765000 0.000000000
@@ -0,0 +1,60 @@
{
"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": "13318119ae97c3b2a76b99fdf85ce82d908865de",
"source_sha256": {
"est_mot_vide": "2bff822183b0e61b31c25b7ea6e6453bb20a69474a73558eb2b9113b9f1d92aa",
"normalisation": "6239cabc4e98a3e841be7e446d2690a24a51aab6719528ea7c0ee3da10562320"
},
"chauffe_par_version": 5,
"mesures_par_version": 50,
"empreinte_rapport": "1d53de903efd2b7c",
"est_mot_vide": {
"reel_s": {
"mediane": 0.056913783999999995,
"q1": 0.056656861999999995,
"q3": 0.0572745155,
"min": 0.056272508,
"max": 0.059938709
},
"cpu_s": {
"mediane": 0.056351000000000054,
"q1": 0.05619474999999996,
"q3": 0.05667575000000001,
"min": 0.055703999999999976,
"max": 0.05950400000000003
}
},
"normalisation": {
"reel_s": {
"mediane": 0.050828704,
"q1": 0.05066724475000001,
"q3": 0.0511212345,
"min": 0.050054952,
"max": 0.054489662
},
"cpu_s": {
"mediane": 0.050346999999999476,
"q1": 0.05014199999999988,
"q3": 0.05065324999999965,
"min": 0.04970199999999991,
"max": 0.05407899999999999
}
},
"gain_reel_pourcent": 10.691750877081008,
"gain_cpu_pourcent": 10.654646767582776,
"paires_plus_rapides": {
"reel_s": 50,
"cpu_s": 50
}
}
+11
View File
@@ -0,0 +1,11 @@
version;execution;temps_reel_s;temps_user_s;temps_systeme_s;pic_rss_kio
initial;1;2.83;2.82;0.00;6664
final;1;0.11;0.11;0.00;6672
final;2;0.11;0.11;0.00;6664
initial;2;2.80;2.80;0.00;6672
initial;3;2.81;2.80;0.00;6564
final;3;0.11;0.11;0.00;6672
final;4;0.11;0.10;0.00;6668
initial;4;2.79;2.79;0.00;6672
initial;5;2.82;2.81;0.00;6504
final;5;0.11;0.11;0.00;6652
1 version execution temps_reel_s temps_user_s temps_systeme_s pic_rss_kio
2 initial 1 2.83 2.82 0.00 6664
3 final 1 0.11 0.11 0.00 6672
4 final 2 0.11 0.11 0.00 6664
5 initial 2 2.80 2.80 0.00 6672
6 initial 3 2.81 2.80 0.00 6564
7 final 3 0.11 0.11 0.00 6672
8 final 4 0.11 0.10 0.00 6668
9 initial 4 2.79 2.79 0.00 6672
10 initial 5 2.82 2.81 0.00 6504
11 final 5 0.11 0.11 0.00 6652
+169
View File
@@ -0,0 +1,169 @@
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls ms/call ms/call name
36.36 0.76 0.76 36 009 819 0.00 0.00 longueur
26.32 1.31 0.55 308 701 874 0.00 0.00 egales
18.18 1.69 0.38 150 182 0.00 0.01 chercher_mot
5.26 1.80 0.11 1 110.00 180.00 trier_entrees
3.35 1.87 0.07 12 172 087 0.00 0.00 comparer
3.35 1.94 0.07 5867 0.01 0.14 longueur_moyenne
1.91 1.98 0.04 _init
1.44 2.01 0.03 32 667 0.00 0.00 copier
0.96 2.03 0.02 250 000 0.00 0.00 est_mot_vide
0.48 2.04 0.01 5 297 256 0.00 0.00 est_lettre
0.48 2.05 0.01 928 117 0.00 0.00 alea
0.48 2.06 0.01 150 182 0.00 0.01 compter_mot
0.48 2.07 0.01 21 746 0.00 0.04 compter_mots_ligne
0.48 2.08 0.01 21 746 0.00 0.00 normaliser_ligne
0.48 2.09 0.01 1 10.00 17.09 analyser_bigrammes
0.00 2.09 0.00 17 202 045 0.00 0.00 doit_echanger
0.00 2.09 0.00 1 266 663 0.00 0.00 en_minuscule
0.00 2.09 0.00 26 801 0.00 0.00 ajouter
0.00 2.09 0.00 1 0.00 5.51 construire_rapport
0.00 2.09 0.00 1 0.00 0.00 decouper_lignes
0.00 2.09 0.00 1 0.00 796.35 ecart_type_longueur
0.00 2.09 0.00 1 0.00 0.00 empreinte
0.00 2.09 0.00 1 0.00 9.70 generer_texte
0.00 2.09 0.00 1 0.00 19.97 generer_vocabulaire
0.00 2.09 0.00 1 0.00 0.00 racine
Call graph
granularity: each sample hit covers 4 byte(s) for 0.48% of 2.09 seconds
index % time self children called name
<spontaneous>
[1] 98.1 0.00 2.05 main [1]
0.01 0.97 21746/21746 compter_mots_ligne [2]
0.00 0.80 1/1 ecart_type_longueur [6]
0.11 0.07 1/1 trier_entrees [9]
0.01 0.04 21746/21746 normaliser_ligne [12]
0.00 0.02 1/1 generer_vocabulaire [17]
0.01 0.01 1/1 analyser_bigrammes [18]
0.00 0.01 1/1 generer_texte [21]
0.00 0.01 1/1 construire_rapport [22]
0.00 0.00 1/5867 longueur_moyenne [5]
0.00 0.00 1/1 decouper_lignes [24]
0.00 0.00 1/1 racine [26]
0.00 0.00 1/1 empreinte [25]
-----------------------------------------------
0.01 0.97 21746/21746 main [1]
[2] 46.7 0.01 0.97 21746 compter_mots_ligne [2]
0.01 0.91 150182/150182 compter_mot [3]
0.02 0.02 250000/250000 est_mot_vide [13]
-----------------------------------------------
0.01 0.91 150182/150182 compter_mots_ligne [2]
[3] 44.2 0.01 0.91 150182 compter_mot [3]
0.38 0.53 150182/150182 chercher_mot [4]
0.01 0.00 5866/32667 copier [15]
-----------------------------------------------
0.38 0.53 150182/150182 compter_mot [3]
[4] 43.5 0.38 0.53 150182 chercher_mot [4]
0.53 0.00 296656203/308701874 egales [8]
-----------------------------------------------
0.00 0.00 1/5867 main [1]
0.07 0.73 5866/5867 ecart_type_longueur [6]
[5] 38.1 0.07 0.73 5867 longueur_moyenne [5]
0.73 0.00 34415822/36009819 longueur [7]
-----------------------------------------------
0.00 0.80 1/1 main [1]
[6] 38.1 0.00 0.80 1 ecart_type_longueur [6]
0.07 0.73 5866/5867 longueur_moyenne [5]
0.00 0.00 5866/36009819 longueur [7]
-----------------------------------------------
0.00 0.00 5866/36009819 ecart_type_longueur [6]
0.00 0.00 26801/36009819 ajouter [16]
0.03 0.00 1561330/36009819 normaliser_ligne [12]
0.73 0.00 34415822/36009819 longueur_moyenne [5]
[7] 36.4 0.76 0.00 36009819 longueur [7]
-----------------------------------------------
0.02 0.00 12045671/308701874 est_mot_vide [13]
0.53 0.00 296656203/308701874 chercher_mot [4]
[8] 26.3 0.55 0.00 308701874 egales [8]
-----------------------------------------------
0.11 0.07 1/1 main [1]
[9] 8.6 0.11 0.07 1 trier_entrees [9]
0.00 0.07 17202045/17202045 doit_echanger [10]
-----------------------------------------------
0.00 0.07 17202045/17202045 trier_entrees [9]
[10] 3.3 0.00 0.07 17202045 doit_echanger [10]
0.07 0.00 12172087/12172087 comparer [11]
-----------------------------------------------
0.07 0.00 12172087/12172087 doit_echanger [10]
[11] 3.3 0.07 0.00 12172087 comparer [11]
-----------------------------------------------
0.01 0.04 21746/21746 main [1]
[12] 2.2 0.01 0.04 21746 normaliser_ligne [12]
0.03 0.00 1561330/36009819 longueur [7]
0.00 0.00 1539584/5297256 est_lettre [19]
0.00 0.00 1266663/1266663 en_minuscule [23]
-----------------------------------------------
0.02 0.02 250000/250000 compter_mots_ligne [2]
[13] 2.0 0.02 0.02 250000 est_mot_vide [13]
0.02 0.00 12045671/308701874 egales [8]
-----------------------------------------------
<spontaneous>
[14] 1.9 0.04 0.00 _init [14]
-----------------------------------------------
0.01 0.00 5866/32667 compter_mot [3]
0.02 0.00 26801/32667 ajouter [16]
[15] 1.4 0.03 0.00 32667 copier [15]
-----------------------------------------------
0.00 0.01 5867/26801 construire_rapport [22]
0.00 0.02 20934/26801 generer_vocabulaire [17]
[16] 1.2 0.00 0.03 26801 ajouter [16]
0.02 0.00 26801/32667 copier [15]
0.00 0.00 26801/36009819 longueur [7]
-----------------------------------------------
0.00 0.02 1/1 main [1]
[17] 1.0 0.00 0.02 1 generer_vocabulaire [17]
0.00 0.02 20934/26801 ajouter [16]
0.00 0.00 27934/928117 alea [20]
-----------------------------------------------
0.01 0.01 1/1 main [1]
[18] 0.8 0.01 0.01 1 analyser_bigrammes [18]
0.01 0.00 3757672/5297256 est_lettre [19]
-----------------------------------------------
0.00 0.00 1539584/5297256 normaliser_ligne [12]
0.01 0.00 3757672/5297256 analyser_bigrammes [18]
[19] 0.5 0.01 0.00 5297256 est_lettre [19]
-----------------------------------------------
0.00 0.00 27934/928117 generer_vocabulaire [17]
0.01 0.00 900183/928117 generer_texte [21]
[20] 0.5 0.01 0.00 928117 alea [20]
-----------------------------------------------
0.00 0.01 1/1 main [1]
[21] 0.5 0.00 0.01 1 generer_texte [21]
0.01 0.00 900183/928117 alea [20]
-----------------------------------------------
0.00 0.01 1/1 main [1]
[22] 0.3 0.00 0.01 1 construire_rapport [22]
0.00 0.01 5867/26801 ajouter [16]
-----------------------------------------------
0.00 0.00 1266663/1266663 normaliser_ligne [12]
[23] 0.0 0.00 0.00 1266663 en_minuscule [23]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[24] 0.0 0.00 0.00 1 decouper_lignes [24]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[25] 0.0 0.00 0.00 1 empreinte [25]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[26] 0.0 0.00 0.00 1 racine [26]
-----------------------------------------------
Index by function name
[14] _init [15] copier [21] generer_texte
[16] ajouter [24] decouper_lignes [17] generer_vocabulaire
[20] alea [10] doit_echanger [7] longueur
[18] analyser_bigrammes [6] ecart_type_longueur [5] longueur_moyenne
[4] chercher_mot [8] egales [12] normaliser_ligne
[11] comparer [25] empreinte [26] racine
[3] compter_mot [23] en_minuscule [9] trier_entrees
[2] compter_mots_ligne [19] est_lettre
[22] construire_rapport [13] est_mot_vide
+169
View File
@@ -0,0 +1,169 @@
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls ms/call ms/call name
64.58 0.78 0.78 36009819 0.00 0.00 longueur
9.17 0.89 0.11 5867 0.02 0.14 longueur_moyenne
7.50 0.97 0.09 1 90.00 139.54 trier_entrees
5.00 1.03 0.06 9860216 0.00 0.00 comparer
2.92 1.07 0.04 32667 0.00 0.00 copier
2.50 1.10 0.03 12045671 0.00 0.00 egales
2.50 1.13 0.03 _init
1.67 1.15 0.02 250000 0.00 0.00 est_mot_vide
1.67 1.17 0.02 150182 0.00 0.00 chercher_mot
1.67 1.19 0.02 150182 0.00 0.00 compter_mot
0.83 1.20 0.01 1 10.00 10.00 decouper_lignes
0.00 1.20 0.00 17202045 0.00 0.00 doit_echanger
0.00 1.20 0.00 5297256 0.00 0.00 est_lettre
0.00 1.20 0.00 1266663 0.00 0.00 en_minuscule
0.00 1.20 0.00 928117 0.00 0.00 alea
0.00 1.20 0.00 26801 0.00 0.00 ajouter
0.00 1.20 0.00 21746 0.00 0.00 compter_mots_ligne
0.00 1.20 0.00 21746 0.00 0.00 normaliser_ligne
0.00 1.20 0.00 1 0.00 0.00 analyser_bigrammes
0.00 1.20 0.00 1 0.00 6.41 construire_rapport
0.00 1.20 0.00 1 0.00 850.68 ecart_type_longueur
0.00 1.20 0.00 1 0.00 0.00 empreinte
0.00 1.20 0.00 1 0.00 0.00 generer_texte
0.00 1.20 0.00 1 0.00 22.88 generer_vocabulaire
0.00 1.20 0.00 1 0.00 0.00 racine
Call graph
granularity: each sample hit covers 4 byte(s) for 0.83% of 1.20 seconds
index % time self children called name
<spontaneous>
[1] 97.5 0.00 1.17 main [1]
0.00 0.85 1/1 ecart_type_longueur [3]
0.09 0.05 1/1 trier_entrees [5]
0.00 0.11 21746/21746 compter_mots_ligne [6]
0.00 0.03 21746/21746 normaliser_ligne [12]
0.00 0.02 1/1 generer_vocabulaire [17]
0.01 0.00 1/1 decouper_lignes [18]
0.00 0.01 1/1 construire_rapport [19]
0.00 0.00 1/5867 longueur_moyenne [2]
0.00 0.00 1/1 generer_texte [25]
0.00 0.00 1/1 racine [26]
0.00 0.00 1/1 analyser_bigrammes [23]
0.00 0.00 1/1 empreinte [24]
-----------------------------------------------
0.00 0.00 1/5867 main [1]
0.11 0.74 5866/5867 ecart_type_longueur [3]
[2] 70.9 0.11 0.74 5867 longueur_moyenne [2]
0.74 0.00 34415822/36009819 longueur [4]
-----------------------------------------------
0.00 0.85 1/1 main [1]
[3] 70.9 0.00 0.85 1 ecart_type_longueur [3]
0.11 0.74 5866/5867 longueur_moyenne [2]
0.00 0.00 5866/36009819 longueur [4]
-----------------------------------------------
0.00 0.00 5866/36009819 ecart_type_longueur [3]
0.00 0.00 26801/36009819 ajouter [16]
0.03 0.00 1561330/36009819 normaliser_ligne [12]
0.74 0.00 34415822/36009819 longueur_moyenne [2]
[4] 64.6 0.78 0.00 36009819 longueur [4]
-----------------------------------------------
0.09 0.05 1/1 main [1]
[5] 11.6 0.09 0.05 1 trier_entrees [5]
0.00 0.05 17202045/17202045 doit_echanger [10]
-----------------------------------------------
0.00 0.11 21746/21746 main [1]
[6] 8.9 0.00 0.11 21746 compter_mots_ligne [6]
0.02 0.04 150182/150182 compter_mot [8]
0.02 0.03 250000/250000 est_mot_vide [9]
-----------------------------------------------
0.01 0.00 1718447/9860216 chercher_mot [13]
0.05 0.00 8141769/9860216 doit_echanger [10]
[7] 5.0 0.06 0.00 9860216 comparer [7]
-----------------------------------------------
0.02 0.04 150182/150182 compter_mots_ligne [6]
[8] 4.7 0.02 0.04 150182 compter_mot [8]
0.02 0.01 150182/150182 chercher_mot [13]
0.01 0.00 5866/32667 copier [11]
-----------------------------------------------
0.02 0.03 250000/250000 compter_mots_ligne [6]
[9] 4.2 0.02 0.03 250000 est_mot_vide [9]
0.03 0.00 12045671/12045671 egales [14]
-----------------------------------------------
0.00 0.05 17202045/17202045 trier_entrees [5]
[10] 4.1 0.00 0.05 17202045 doit_echanger [10]
0.05 0.00 8141769/9860216 comparer [7]
-----------------------------------------------
0.01 0.00 5866/32667 compter_mot [8]
0.03 0.00 26801/32667 ajouter [16]
[11] 2.9 0.04 0.00 32667 copier [11]
-----------------------------------------------
0.00 0.03 21746/21746 main [1]
[12] 2.8 0.00 0.03 21746 normaliser_ligne [12]
0.03 0.00 1561330/36009819 longueur [4]
0.00 0.00 1539584/5297256 est_lettre [20]
0.00 0.00 1266663/1266663 en_minuscule [21]
-----------------------------------------------
0.02 0.01 150182/150182 compter_mot [8]
[13] 2.5 0.02 0.01 150182 chercher_mot [13]
0.01 0.00 1718447/9860216 comparer [7]
-----------------------------------------------
0.03 0.00 12045671/12045671 est_mot_vide [9]
[14] 2.5 0.03 0.00 12045671 egales [14]
-----------------------------------------------
<spontaneous>
[15] 2.5 0.03 0.00 _init [15]
-----------------------------------------------
0.00 0.01 5867/26801 construire_rapport [19]
0.00 0.02 20934/26801 generer_vocabulaire [17]
[16] 2.4 0.00 0.03 26801 ajouter [16]
0.03 0.00 26801/32667 copier [11]
0.00 0.00 26801/36009819 longueur [4]
-----------------------------------------------
0.00 0.02 1/1 main [1]
[17] 1.9 0.00 0.02 1 generer_vocabulaire [17]
0.00 0.02 20934/26801 ajouter [16]
0.00 0.00 27934/928117 alea [22]
-----------------------------------------------
0.01 0.00 1/1 main [1]
[18] 0.8 0.01 0.00 1 decouper_lignes [18]
-----------------------------------------------
0.00 0.01 1/1 main [1]
[19] 0.5 0.00 0.01 1 construire_rapport [19]
0.00 0.01 5867/26801 ajouter [16]
-----------------------------------------------
0.00 0.00 1539584/5297256 normaliser_ligne [12]
0.00 0.00 3757672/5297256 analyser_bigrammes [23]
[20] 0.0 0.00 0.00 5297256 est_lettre [20]
-----------------------------------------------
0.00 0.00 1266663/1266663 normaliser_ligne [12]
[21] 0.0 0.00 0.00 1266663 en_minuscule [21]
-----------------------------------------------
0.00 0.00 27934/928117 generer_vocabulaire [17]
0.00 0.00 900183/928117 generer_texte [25]
[22] 0.0 0.00 0.00 928117 alea [22]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[23] 0.0 0.00 0.00 1 analyser_bigrammes [23]
0.00 0.00 3757672/5297256 est_lettre [20]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[24] 0.0 0.00 0.00 1 empreinte [24]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[25] 0.0 0.00 0.00 1 generer_texte [25]
0.00 0.00 900183/928117 alea [22]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[26] 0.0 0.00 0.00 1 racine [26]
-----------------------------------------------
Index by function name
[15] _init [11] copier [25] generer_texte
[16] ajouter [18] decouper_lignes [17] generer_vocabulaire
[22] alea [10] doit_echanger [4] longueur
[23] analyser_bigrammes [3] ecart_type_longueur [2] longueur_moyenne
[13] chercher_mot [14] egales [12] normaliser_ligne
[7] comparer [24] empreinte [26] racine
[8] compter_mot [21] en_minuscule [5] trier_entrees
[6] compter_mots_ligne [20] est_lettre
[19] construire_rapport [9] est_mot_vide
+162
View File
@@ -0,0 +1,162 @@
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls ms/call ms/call name
61.33 0.46 0.46 1599863 0.00 0.00 longueur
12.00 0.55 0.09 9860216 0.00 0.00 comparer
8.00 0.61 0.06 1 60.00 164.31 trier_entrees
4.00 0.64 0.03 17202045 0.00 0.00 doit_echanger
4.00 0.67 0.03 12045671 0.00 0.00 egales
4.00 0.70 0.03 150182 0.00 0.00 compter_mot
1.33 0.71 0.01 5297256 0.00 0.00 est_lettre
1.33 0.72 0.01 250000 0.00 0.00 est_mot_vide
1.33 0.73 0.01 150182 0.00 0.00 chercher_mot
1.33 0.74 0.01 1 10.00 17.09 analyser_bigrammes
1.33 0.75 0.01 1 10.00 10.00 generer_texte
0.00 0.75 0.00 1266663 0.00 0.00 en_minuscule
0.00 0.75 0.00 928117 0.00 0.00 alea
0.00 0.75 0.00 32667 0.00 0.00 copier
0.00 0.75 0.00 26801 0.00 0.00 ajouter
0.00 0.75 0.00 21746 0.00 0.00 compter_mots_ligne
0.00 0.75 0.00 21746 0.00 0.02 normaliser_ligne
0.00 0.75 0.00 1 0.00 1.69 construire_rapport
0.00 0.75 0.00 1 0.00 0.00 decouper_lignes
0.00 0.75 0.00 1 0.00 1.69 ecart_type_longueur
0.00 0.75 0.00 1 0.00 0.00 empreinte
0.00 0.75 0.00 1 0.00 6.02 generer_vocabulaire
0.00 0.75 0.00 1 0.00 1.69 longueur_moyenne
0.00 0.75 0.00 1 0.00 0.00 racine
Call graph
granularity: each sample hit covers 4 byte(s) for 1.33% of 0.75 seconds
index % time self children called name
<spontaneous>
[1] 100.0 0.00 0.75 main [1]
0.00 0.45 21746/21746 normaliser_ligne [3]
0.06 0.10 1/1 trier_entrees [4]
0.00 0.10 21746/21746 compter_mots_ligne [6]
0.01 0.01 1/1 analyser_bigrammes [12]
0.01 0.00 1/1 generer_texte [14]
0.00 0.01 1/1 generer_vocabulaire [16]
0.00 0.00 1/1 construire_rapport [17]
0.00 0.00 1/1 longueur_moyenne [19]
0.00 0.00 1/1 ecart_type_longueur [18]
0.00 0.00 1/1 decouper_lignes [23]
0.00 0.00 1/1 racine [25]
0.00 0.00 1/1 empreinte [24]
-----------------------------------------------
0.00 0.00 5866/1599863 longueur_moyenne [19]
0.00 0.00 5866/1599863 ecart_type_longueur [18]
0.01 0.00 26801/1599863 ajouter [15]
0.45 0.00 1561330/1599863 normaliser_ligne [3]
[2] 61.3 0.46 0.00 1599863 longueur [2]
-----------------------------------------------
0.00 0.45 21746/21746 main [1]
[3] 60.2 0.00 0.45 21746 normaliser_ligne [3]
0.45 0.00 1561330/1599863 longueur [2]
0.00 0.00 1539584/5297256 est_lettre [13]
0.00 0.00 1266663/1266663 en_minuscule [20]
-----------------------------------------------
0.06 0.10 1/1 main [1]
[4] 21.9 0.06 0.10 1 trier_entrees [4]
0.03 0.07 17202045/17202045 doit_echanger [5]
-----------------------------------------------
0.03 0.07 17202045/17202045 trier_entrees [4]
[5] 13.9 0.03 0.07 17202045 doit_echanger [5]
0.07 0.00 8141769/9860216 comparer [7]
-----------------------------------------------
0.00 0.10 21746/21746 main [1]
[6] 12.8 0.00 0.10 21746 compter_mots_ligne [6]
0.03 0.03 150182/150182 compter_mot [8]
0.01 0.03 250000/250000 est_mot_vide [9]
-----------------------------------------------
0.02 0.00 1718447/9860216 chercher_mot [11]
0.07 0.00 8141769/9860216 doit_echanger [5]
[7] 12.0 0.09 0.00 9860216 comparer [7]
-----------------------------------------------
0.03 0.03 150182/150182 compter_mots_ligne [6]
[8] 7.4 0.03 0.03 150182 compter_mot [8]
0.01 0.02 150182/150182 chercher_mot [11]
0.00 0.00 5866/32667 copier [22]
-----------------------------------------------
0.01 0.03 250000/250000 compter_mots_ligne [6]
[9] 5.3 0.01 0.03 250000 est_mot_vide [9]
0.03 0.00 12045671/12045671 egales [10]
-----------------------------------------------
0.03 0.00 12045671/12045671 est_mot_vide [9]
[10] 4.0 0.03 0.00 12045671 egales [10]
-----------------------------------------------
0.01 0.02 150182/150182 compter_mot [8]
[11] 3.4 0.01 0.02 150182 chercher_mot [11]
0.02 0.00 1718447/9860216 comparer [7]
-----------------------------------------------
0.01 0.01 1/1 main [1]
[12] 2.3 0.01 0.01 1 analyser_bigrammes [12]
0.01 0.00 3757672/5297256 est_lettre [13]
-----------------------------------------------
0.00 0.00 1539584/5297256 normaliser_ligne [3]
0.01 0.00 3757672/5297256 analyser_bigrammes [12]
[13] 1.3 0.01 0.00 5297256 est_lettre [13]
-----------------------------------------------
0.01 0.00 1/1 main [1]
[14] 1.3 0.01 0.00 1 generer_texte [14]
0.00 0.00 900183/928117 alea [21]
-----------------------------------------------
0.00 0.00 5867/26801 construire_rapport [17]
0.00 0.01 20934/26801 generer_vocabulaire [16]
[15] 1.0 0.00 0.01 26801 ajouter [15]
0.01 0.00 26801/1599863 longueur [2]
0.00 0.00 26801/32667 copier [22]
-----------------------------------------------
0.00 0.01 1/1 main [1]
[16] 0.8 0.00 0.01 1 generer_vocabulaire [16]
0.00 0.01 20934/26801 ajouter [15]
0.00 0.00 27934/928117 alea [21]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[17] 0.2 0.00 0.00 1 construire_rapport [17]
0.00 0.00 5867/26801 ajouter [15]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[18] 0.2 0.00 0.00 1 ecart_type_longueur [18]
0.00 0.00 5866/1599863 longueur [2]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[19] 0.2 0.00 0.00 1 longueur_moyenne [19]
0.00 0.00 5866/1599863 longueur [2]
-----------------------------------------------
0.00 0.00 1266663/1266663 normaliser_ligne [3]
[20] 0.0 0.00 0.00 1266663 en_minuscule [20]
-----------------------------------------------
0.00 0.00 27934/928117 generer_vocabulaire [16]
0.00 0.00 900183/928117 generer_texte [14]
[21] 0.0 0.00 0.00 928117 alea [21]
-----------------------------------------------
0.00 0.00 5866/32667 compter_mot [8]
0.00 0.00 26801/32667 ajouter [15]
[22] 0.0 0.00 0.00 32667 copier [22]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[23] 0.0 0.00 0.00 1 decouper_lignes [23]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[24] 0.0 0.00 0.00 1 empreinte [24]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[25] 0.0 0.00 0.00 1 racine [25]
-----------------------------------------------
Index by function name
[15] ajouter [22] copier [9] est_mot_vide
[21] alea [23] decouper_lignes [14] generer_texte
[12] analyser_bigrammes [5] doit_echanger [16] generer_vocabulaire
[11] chercher_mot [18] ecart_type_longueur [2] longueur
[7] comparer [10] egales [19] longueur_moyenne
[8] compter_mot [24] empreinte [3] normaliser_ligne
[6] compter_mots_ligne [20] en_minuscule [25] racine
[17] construire_rapport [13] est_lettre [4] trier_entrees
+172
View File
@@ -0,0 +1,172 @@
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls ms/call ms/call name
61.64 0.45 0.45 1599863 0.00 0.00 longueur
10.27 0.53 0.07 12172087 0.00 0.00 comparer
9.59 0.59 0.07 1 70.00 195.00 trier_entrees
6.85 0.65 0.05 17202045 0.00 0.00 doit_echanger
5.48 0.69 0.04 250000 0.00 0.00 est_mot_vide
2.05 0.70 0.01 12198772 0.00 0.00 egales
1.37 0.71 0.01 150182 0.00 0.00 chercher_mot
1.37 0.72 0.01 1 10.00 10.00 decouper_lignes
1.37 0.73 0.01 _init
0.00 0.73 0.00 5297256 0.00 0.00 est_lettre
0.00 0.73 0.00 1266663 0.00 0.00 en_minuscule
0.00 0.73 0.00 928117 0.00 0.00 alea
0.00 0.73 0.00 150182 0.00 0.00 compter_mot
0.00 0.73 0.00 150182 0.00 0.00 hacher_mot
0.00 0.73 0.00 32667 0.00 0.00 copier
0.00 0.73 0.00 26801 0.00 0.00 ajouter
0.00 0.73 0.00 21746 0.00 0.00 compter_mots_ligne
0.00 0.73 0.00 21746 0.00 0.02 normaliser_ligne
0.00 0.73 0.00 1 0.00 0.00 analyser_bigrammes
0.00 0.73 0.00 1 0.00 1.65 construire_rapport
0.00 0.73 0.00 1 0.00 1.65 ecart_type_longueur
0.00 0.73 0.00 1 0.00 0.00 empreinte
0.00 0.73 0.00 1 0.00 0.00 generer_texte
0.00 0.73 0.00 1 0.00 5.89 generer_vocabulaire
0.00 0.73 0.00 1 0.00 1.65 longueur_moyenne
0.00 0.73 0.00 1 0.00 0.00 racine
Call graph
granularity: each sample hit covers 4 byte(s) for 1.37% of 0.73 seconds
index % time self children called name
<spontaneous>
[1] 98.6 0.00 0.72 main [1]
0.00 0.44 21746/21746 normaliser_ligne [3]
0.07 0.12 1/1 trier_entrees [4]
0.00 0.07 21746/21746 compter_mots_ligne [7]
0.01 0.00 1/1 decouper_lignes [12]
0.00 0.01 1/1 generer_vocabulaire [15]
0.00 0.00 1/1 construire_rapport [16]
0.00 0.00 1/1 longueur_moyenne [18]
0.00 0.00 1/1 ecart_type_longueur [17]
0.00 0.00 1/1 generer_texte [26]
0.00 0.00 1/1 racine [27]
0.00 0.00 1/1 analyser_bigrammes [24]
0.00 0.00 1/1 empreinte [25]
-----------------------------------------------
0.00 0.00 5866/1599863 longueur_moyenne [18]
0.00 0.00 5866/1599863 ecart_type_longueur [17]
0.01 0.00 26801/1599863 ajouter [14]
0.44 0.00 1561330/1599863 normaliser_ligne [3]
[2] 61.6 0.45 0.00 1599863 longueur [2]
-----------------------------------------------
0.00 0.44 21746/21746 main [1]
[3] 60.2 0.00 0.44 21746 normaliser_ligne [3]
0.44 0.00 1561330/1599863 longueur [2]
0.00 0.00 1539584/5297256 est_lettre [19]
0.00 0.00 1266663/1266663 en_minuscule [20]
-----------------------------------------------
0.07 0.12 1/1 main [1]
[4] 26.7 0.07 0.12 1 trier_entrees [4]
0.05 0.07 17202045/17202045 doit_echanger [5]
-----------------------------------------------
0.05 0.07 17202045/17202045 trier_entrees [4]
[5] 17.1 0.05 0.07 17202045 doit_echanger [5]
0.07 0.00 12172087/12172087 comparer [6]
-----------------------------------------------
0.07 0.00 12172087/12172087 doit_echanger [5]
[6] 10.3 0.07 0.00 12172087 comparer [6]
-----------------------------------------------
0.00 0.07 21746/21746 main [1]
[7] 8.9 0.00 0.07 21746 compter_mots_ligne [7]
0.04 0.01 250000/250000 est_mot_vide [8]
0.00 0.01 150182/150182 compter_mot [11]
-----------------------------------------------
0.04 0.01 250000/250000 compter_mots_ligne [7]
[8] 7.5 0.04 0.01 250000 est_mot_vide [8]
0.01 0.00 12045671/12198772 egales [9]
-----------------------------------------------
0.00 0.00 153101/12198772 chercher_mot [10]
0.01 0.00 12045671/12198772 est_mot_vide [8]
[9] 2.1 0.01 0.00 12198772 egales [9]
-----------------------------------------------
0.01 0.00 150182/150182 compter_mot [11]
[10] 1.4 0.01 0.00 150182 chercher_mot [10]
0.00 0.00 153101/12198772 egales [9]
0.00 0.00 150182/150182 hacher_mot [22]
-----------------------------------------------
0.00 0.01 150182/150182 compter_mots_ligne [7]
[11] 1.4 0.00 0.01 150182 compter_mot [11]
0.01 0.00 150182/150182 chercher_mot [10]
0.00 0.00 5866/32667 copier [23]
-----------------------------------------------
0.01 0.00 1/1 main [1]
[12] 1.4 0.01 0.00 1 decouper_lignes [12]
-----------------------------------------------
<spontaneous>
[13] 1.4 0.01 0.00 _init [13]
-----------------------------------------------
0.00 0.00 5867/26801 construire_rapport [16]
0.00 0.01 20934/26801 generer_vocabulaire [15]
[14] 1.0 0.00 0.01 26801 ajouter [14]
0.01 0.00 26801/1599863 longueur [2]
0.00 0.00 26801/32667 copier [23]
-----------------------------------------------
0.00 0.01 1/1 main [1]
[15] 0.8 0.00 0.01 1 generer_vocabulaire [15]
0.00 0.01 20934/26801 ajouter [14]
0.00 0.00 27934/928117 alea [21]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[16] 0.2 0.00 0.00 1 construire_rapport [16]
0.00 0.00 5867/26801 ajouter [14]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[17] 0.2 0.00 0.00 1 ecart_type_longueur [17]
0.00 0.00 5866/1599863 longueur [2]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[18] 0.2 0.00 0.00 1 longueur_moyenne [18]
0.00 0.00 5866/1599863 longueur [2]
-----------------------------------------------
0.00 0.00 1539584/5297256 normaliser_ligne [3]
0.00 0.00 3757672/5297256 analyser_bigrammes [24]
[19] 0.0 0.00 0.00 5297256 est_lettre [19]
-----------------------------------------------
0.00 0.00 1266663/1266663 normaliser_ligne [3]
[20] 0.0 0.00 0.00 1266663 en_minuscule [20]
-----------------------------------------------
0.00 0.00 27934/928117 generer_vocabulaire [15]
0.00 0.00 900183/928117 generer_texte [26]
[21] 0.0 0.00 0.00 928117 alea [21]
-----------------------------------------------
0.00 0.00 150182/150182 chercher_mot [10]
[22] 0.0 0.00 0.00 150182 hacher_mot [22]
-----------------------------------------------
0.00 0.00 5866/32667 compter_mot [11]
0.00 0.00 26801/32667 ajouter [14]
[23] 0.0 0.00 0.00 32667 copier [23]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[24] 0.0 0.00 0.00 1 analyser_bigrammes [24]
0.00 0.00 3757672/5297256 est_lettre [19]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[25] 0.0 0.00 0.00 1 empreinte [25]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[26] 0.0 0.00 0.00 1 generer_texte [26]
0.00 0.00 900183/928117 alea [21]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[27] 0.0 0.00 0.00 1 racine [27]
-----------------------------------------------
Index by function name
[13] _init [23] copier [26] generer_texte
[14] ajouter [12] decouper_lignes [15] generer_vocabulaire
[21] alea [5] doit_echanger [22] hacher_mot
[24] analyser_bigrammes [17] ecart_type_longueur [2] longueur
[10] chercher_mot [9] egales [18] longueur_moyenne
[6] comparer [25] empreinte [3] normaliser_ligne
[11] compter_mot [20] en_minuscule [27] racine
[7] compter_mots_ligne [19] est_lettre [4] trier_entrees
[16] construire_rapport [8] est_mot_vide
+159
View File
@@ -0,0 +1,159 @@
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls ms/call ms/call name
22.22 0.06 0.06 250000 0.00 0.00 est_mot_vide
18.52 0.11 0.05 17202045 0.00 0.00 doit_echanger
12.96 0.14 0.04 12172087 0.00 0.00 comparer
11.11 0.17 0.03 5297256 0.00 0.00 est_lettre
11.11 0.20 0.03 _init
9.26 0.23 0.03 12198772 0.00 0.00 egales
7.41 0.25 0.02 1 20.00 105.00 trier_entrees
3.70 0.26 0.01 21746 0.00 0.00 normaliser_ligne
1.85 0.27 0.01 150182 0.00 0.00 chercher_mot
1.85 0.27 0.01 150182 0.00 0.00 hacher_mot
0.00 0.27 0.00 1266663 0.00 0.00 en_minuscule
0.00 0.27 0.00 928117 0.00 0.00 alea
0.00 0.27 0.00 150182 0.00 0.00 compter_mot
0.00 0.27 0.00 26801 0.00 0.00 ajouter
0.00 0.27 0.00 21746 0.00 0.00 compter_mots_ligne
0.00 0.27 0.00 5866 0.00 0.00 copier
0.00 0.27 0.00 1 0.00 21.28 analyser_bigrammes
0.00 0.27 0.00 1 0.00 0.00 construire_rapport
0.00 0.27 0.00 1 0.00 0.00 decouper_lignes
0.00 0.27 0.00 1 0.00 0.00 ecart_type_longueur
0.00 0.27 0.00 1 0.00 0.00 empreinte
0.00 0.27 0.00 1 0.00 0.00 generer_texte
0.00 0.27 0.00 1 0.00 0.00 generer_vocabulaire
0.00 0.27 0.00 1 0.00 0.00 longueur_moyenne
0.00 0.27 0.00 1 0.00 0.00 racine
Call graph
granularity: each sample hit covers 4 byte(s) for 3.70% of 0.27 seconds
index % time self children called name
<spontaneous>
[1] 88.9 0.00 0.24 main [1]
0.02 0.09 1/1 trier_entrees [2]
0.00 0.10 21746/21746 compter_mots_ligne [3]
0.00 0.02 1/1 analyser_bigrammes [10]
0.01 0.01 21746/21746 normaliser_ligne [11]
0.00 0.00 1/1 generer_vocabulaire [24]
0.00 0.00 1/1 generer_texte [23]
0.00 0.00 1/1 decouper_lignes [20]
0.00 0.00 1/1 longueur_moyenne [25]
0.00 0.00 1/1 ecart_type_longueur [21]
0.00 0.00 1/1 racine [26]
0.00 0.00 1/1 construire_rapport [19]
0.00 0.00 1/1 empreinte [22]
-----------------------------------------------
0.02 0.09 1/1 main [1]
[2] 38.9 0.02 0.09 1 trier_entrees [2]
0.05 0.04 17202045/17202045 doit_echanger [4]
-----------------------------------------------
0.00 0.10 21746/21746 main [1]
[3] 35.2 0.00 0.10 21746 compter_mots_ligne [3]
0.06 0.02 250000/250000 est_mot_vide [5]
0.00 0.01 150182/150182 compter_mot [13]
-----------------------------------------------
0.05 0.04 17202045/17202045 trier_entrees [2]
[4] 31.5 0.05 0.04 17202045 doit_echanger [4]
0.04 0.00 12172087/12172087 comparer [6]
-----------------------------------------------
0.06 0.02 250000/250000 compter_mots_ligne [3]
[5] 31.4 0.06 0.02 250000 est_mot_vide [5]
0.02 0.00 12045671/12198772 egales [9]
-----------------------------------------------
0.04 0.00 12172087/12172087 doit_echanger [4]
[6] 13.0 0.04 0.00 12172087 comparer [6]
-----------------------------------------------
0.01 0.00 1539584/5297256 normaliser_ligne [11]
0.02 0.00 3757672/5297256 analyser_bigrammes [10]
[7] 11.1 0.03 0.00 5297256 est_lettre [7]
-----------------------------------------------
<spontaneous>
[8] 11.1 0.03 0.00 _init [8]
-----------------------------------------------
0.00 0.00 153101/12198772 chercher_mot [12]
0.02 0.00 12045671/12198772 est_mot_vide [5]
[9] 9.3 0.03 0.00 12198772 egales [9]
-----------------------------------------------
0.00 0.02 1/1 main [1]
[10] 7.9 0.00 0.02 1 analyser_bigrammes [10]
0.02 0.00 3757672/5297256 est_lettre [7]
-----------------------------------------------
0.01 0.01 21746/21746 main [1]
[11] 6.9 0.01 0.01 21746 normaliser_ligne [11]
0.01 0.00 1539584/5297256 est_lettre [7]
0.00 0.00 1266663/1266663 en_minuscule [15]
-----------------------------------------------
0.01 0.01 150182/150182 compter_mot [13]
[12] 3.8 0.01 0.01 150182 chercher_mot [12]
0.01 0.00 150182/150182 hacher_mot [14]
0.00 0.00 153101/12198772 egales [9]
-----------------------------------------------
0.00 0.01 150182/150182 compter_mots_ligne [3]
[13] 3.8 0.00 0.01 150182 compter_mot [13]
0.01 0.01 150182/150182 chercher_mot [12]
0.00 0.00 5866/5866 copier [18]
-----------------------------------------------
0.01 0.00 150182/150182 chercher_mot [12]
[14] 1.9 0.01 0.00 150182 hacher_mot [14]
-----------------------------------------------
0.00 0.00 1266663/1266663 normaliser_ligne [11]
[15] 0.0 0.00 0.00 1266663 en_minuscule [15]
-----------------------------------------------
0.00 0.00 27934/928117 generer_vocabulaire [24]
0.00 0.00 900183/928117 generer_texte [23]
[16] 0.0 0.00 0.00 928117 alea [16]
-----------------------------------------------
0.00 0.00 5867/26801 construire_rapport [19]
0.00 0.00 20934/26801 generer_vocabulaire [24]
[17] 0.0 0.00 0.00 26801 ajouter [17]
-----------------------------------------------
0.00 0.00 5866/5866 compter_mot [13]
[18] 0.0 0.00 0.00 5866 copier [18]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[19] 0.0 0.00 0.00 1 construire_rapport [19]
0.00 0.00 5867/26801 ajouter [17]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[20] 0.0 0.00 0.00 1 decouper_lignes [20]
-----------------------------------------------
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 generer_texte [23]
0.00 0.00 900183/928117 alea [16]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[24] 0.0 0.00 0.00 1 generer_vocabulaire [24]
0.00 0.00 27934/928117 alea [16]
0.00 0.00 20934/26801 ajouter [17]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[25] 0.0 0.00 0.00 1 longueur_moyenne [25]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[26] 0.0 0.00 0.00 1 racine [26]
-----------------------------------------------
Index by function name
[8] _init [18] copier [23] generer_texte
[17] ajouter [20] decouper_lignes [24] generer_vocabulaire
[16] alea [4] doit_echanger [14] hacher_mot
[10] analyser_bigrammes [21] ecart_type_longueur [25] longueur_moyenne
[12] chercher_mot [9] egales [11] normaliser_ligne
[6] comparer [22] empreinte [26] racine
[13] compter_mot [15] en_minuscule [2] trier_entrees
[3] compter_mots_ligne [7] est_lettre
[19] construire_rapport [5] est_mot_vide
+160
View File
@@ -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
45.45 0.05 0.05 12198772 0.00 0.00 egales
18.18 0.07 0.02 1 20.00 27.09 analyser_bigrammes
9.09 0.08 0.01 5297256 0.00 0.00 est_lettre
9.09 0.09 0.01 1266663 0.00 0.00 en_minuscule
9.09 0.10 0.01 250000 0.00 0.00 est_mot_vide
9.09 0.11 0.01 1 10.00 10.00 decouper_lignes
0.00 0.11 0.00 928117 0.00 0.00 alea
0.00 0.11 0.00 150182 0.00 0.00 chercher_mot
0.00 0.11 0.00 150182 0.00 0.00 compter_mot
0.00 0.11 0.00 150182 0.00 0.00 hacher_mot
0.00 0.11 0.00 129602 0.00 0.00 doit_echanger
0.00 0.11 0.00 32813 0.00 0.00 comparer
0.00 0.11 0.00 26801 0.00 0.00 ajouter
0.00 0.11 0.00 21746 0.00 0.00 compter_mots_ligne
0.00 0.11 0.00 21746 0.00 0.00 normaliser_ligne
0.00 0.11 0.00 8798 0.00 0.00 retablir_tas
0.00 0.11 0.00 5866 0.00 0.00 copier
0.00 0.11 0.00 1 0.00 0.00 construire_rapport
0.00 0.11 0.00 1 0.00 0.00 ecart_type_longueur
0.00 0.11 0.00 1 0.00 0.00 empreinte
0.00 0.11 0.00 1 0.00 0.00 generer_texte
0.00 0.11 0.00 1 0.00 0.00 generer_vocabulaire
0.00 0.11 0.00 1 0.00 0.00 longueur_moyenne
0.00 0.11 0.00 1 0.00 0.00 racine
0.00 0.11 0.00 1 0.00 0.00 trier_entrees
Call graph
granularity: each sample hit covers 4 byte(s) for 9.09% of 0.11 seconds
index % time self children called name
<spontaneous>
[1] 100.0 0.00 0.11 main [1]
0.00 0.06 21746/21746 compter_mots_ligne [2]
0.02 0.01 1/1 analyser_bigrammes [5]
0.00 0.01 21746/21746 normaliser_ligne [6]
0.01 0.00 1/1 decouper_lignes [9]
0.00 0.00 1/1 generer_vocabulaire [23]
0.00 0.00 1/1 generer_texte [22]
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 [20]
0.00 0.00 1/1 racine [25]
0.00 0.00 1/1 construire_rapport [19]
0.00 0.00 1/1 empreinte [21]
-----------------------------------------------
0.00 0.06 21746/21746 main [1]
[2] 54.5 0.00 0.06 21746 compter_mots_ligne [2]
0.01 0.05 250000/250000 est_mot_vide [3]
0.00 0.00 150182/150182 compter_mot [11]
-----------------------------------------------
0.01 0.05 250000/250000 compter_mots_ligne [2]
[3] 54.0 0.01 0.05 250000 est_mot_vide [3]
0.05 0.00 12045671/12198772 egales [4]
-----------------------------------------------
0.00 0.00 153101/12198772 chercher_mot [10]
0.05 0.00 12045671/12198772 est_mot_vide [3]
[4] 45.5 0.05 0.00 12198772 egales [4]
-----------------------------------------------
0.02 0.01 1/1 main [1]
[5] 24.6 0.02 0.01 1 analyser_bigrammes [5]
0.01 0.00 3757672/5297256 est_lettre [7]
-----------------------------------------------
0.00 0.01 21746/21746 main [1]
[6] 11.7 0.00 0.01 21746 normaliser_ligne [6]
0.01 0.00 1266663/1266663 en_minuscule [8]
0.00 0.00 1539584/5297256 est_lettre [7]
-----------------------------------------------
0.00 0.00 1539584/5297256 normaliser_ligne [6]
0.01 0.00 3757672/5297256 analyser_bigrammes [5]
[7] 9.1 0.01 0.00 5297256 est_lettre [7]
-----------------------------------------------
0.01 0.00 1266663/1266663 normaliser_ligne [6]
[8] 9.1 0.01 0.00 1266663 en_minuscule [8]
-----------------------------------------------
0.01 0.00 1/1 main [1]
[9] 9.1 0.01 0.00 1 decouper_lignes [9]
-----------------------------------------------
0.00 0.00 150182/150182 compter_mot [11]
[10] 0.6 0.00 0.00 150182 chercher_mot [10]
0.00 0.00 153101/12198772 egales [4]
0.00 0.00 150182/150182 hacher_mot [13]
-----------------------------------------------
0.00 0.00 150182/150182 compter_mots_ligne [2]
[11] 0.6 0.00 0.00 150182 compter_mot [11]
0.00 0.00 150182/150182 chercher_mot [10]
0.00 0.00 5866/5866 copier [18]
-----------------------------------------------
0.00 0.00 27934/928117 generer_vocabulaire [23]
0.00 0.00 900183/928117 generer_texte [22]
[12] 0.0 0.00 0.00 928117 alea [12]
-----------------------------------------------
0.00 0.00 150182/150182 chercher_mot [10]
[13] 0.0 0.00 0.00 150182 hacher_mot [13]
-----------------------------------------------
0.00 0.00 129602/129602 retablir_tas [17]
[14] 0.0 0.00 0.00 129602 doit_echanger [14]
0.00 0.00 32813/32813 comparer [15]
-----------------------------------------------
0.00 0.00 32813/32813 doit_echanger [14]
[15] 0.0 0.00 0.00 32813 comparer [15]
-----------------------------------------------
0.00 0.00 5867/26801 construire_rapport [19]
0.00 0.00 20934/26801 generer_vocabulaire [23]
[16] 0.0 0.00 0.00 26801 ajouter [16]
-----------------------------------------------
0.00 0.00 8798/8798 trier_entrees [26]
[17] 0.0 0.00 0.00 8798 retablir_tas [17]
0.00 0.00 129602/129602 doit_echanger [14]
-----------------------------------------------
0.00 0.00 5866/5866 compter_mot [11]
[18] 0.0 0.00 0.00 5866 copier [18]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[19] 0.0 0.00 0.00 1 construire_rapport [19]
0.00 0.00 5867/26801 ajouter [16]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[20] 0.0 0.00 0.00 1 ecart_type_longueur [20]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[21] 0.0 0.00 0.00 1 empreinte [21]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[22] 0.0 0.00 0.00 1 generer_texte [22]
0.00 0.00 900183/928117 alea [12]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[23] 0.0 0.00 0.00 1 generer_vocabulaire [23]
0.00 0.00 27934/928117 alea [12]
0.00 0.00 20934/26801 ajouter [16]
-----------------------------------------------
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 8798/8798 retablir_tas [17]
-----------------------------------------------
Index by function name
[16] ajouter [9] decouper_lignes [23] generer_vocabulaire
[12] alea [14] doit_echanger [13] hacher_mot
[5] analyser_bigrammes [20] ecart_type_longueur [24] longueur_moyenne
[10] chercher_mot [4] egales [6] normaliser_ligne
[15] comparer [21] empreinte [25] racine
[11] compter_mot [8] en_minuscule [17] retablir_tas
[2] compter_mots_ligne [7] est_lettre [26] trier_entrees
[19] construire_rapport [3] est_mot_vide
[18] copier [22] generer_texte
+162
View File
@@ -0,0 +1,162 @@
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls ms/call ms/call name
62.50 0.05 0.05 12198772 0.00 0.00 egales
12.50 0.06 0.01 1 10.00 10.00 analyser_bigrammes
12.50 0.07 0.01 1 10.00 10.00 decouper_lignes
12.50 0.08 0.01 _init
0.00 0.08 0.00 1539584 0.00 0.00 est_lettre
0.00 0.08 0.00 1266663 0.00 0.00 en_minuscule
0.00 0.08 0.00 928117 0.00 0.00 alea
0.00 0.08 0.00 250000 0.00 0.00 est_mot_vide
0.00 0.08 0.00 150182 0.00 0.00 chercher_mot
0.00 0.08 0.00 150182 0.00 0.00 compter_mot
0.00 0.08 0.00 150182 0.00 0.00 hacher_mot
0.00 0.08 0.00 129602 0.00 0.00 doit_echanger
0.00 0.08 0.00 32813 0.00 0.00 comparer
0.00 0.08 0.00 26801 0.00 0.00 ajouter
0.00 0.08 0.00 21746 0.00 0.00 compter_mots_ligne
0.00 0.08 0.00 21746 0.00 0.00 normaliser_ligne
0.00 0.08 0.00 8798 0.00 0.00 retablir_tas
0.00 0.08 0.00 5866 0.00 0.00 copier
0.00 0.08 0.00 1 0.00 0.00 construire_rapport
0.00 0.08 0.00 1 0.00 0.00 ecart_type_longueur
0.00 0.08 0.00 1 0.00 0.00 empreinte
0.00 0.08 0.00 1 0.00 0.00 generer_texte
0.00 0.08 0.00 1 0.00 0.00 generer_vocabulaire
0.00 0.08 0.00 1 0.00 0.00 longueur_moyenne
0.00 0.08 0.00 1 0.00 0.00 racine
0.00 0.08 0.00 1 0.00 0.00 trier_entrees
Call graph
granularity: each sample hit covers 4 byte(s) for 12.50% of 0.08 seconds
index % time self children called name
<spontaneous>
[1] 87.5 0.00 0.07 main [1]
0.00 0.05 21746/21746 compter_mots_ligne [3]
0.01 0.00 1/1 decouper_lignes [6]
0.01 0.00 1/1 analyser_bigrammes [5]
0.00 0.00 21746/21746 normaliser_ligne [17]
0.00 0.00 1/1 generer_vocabulaire [24]
0.00 0.00 1/1 generer_texte [23]
0.00 0.00 1/1 trier_entrees [27]
0.00 0.00 1/1 longueur_moyenne [25]
0.00 0.00 1/1 ecart_type_longueur [21]
0.00 0.00 1/1 racine [26]
0.00 0.00 1/1 construire_rapport [20]
0.00 0.00 1/1 empreinte [22]
-----------------------------------------------
0.00 0.00 153101/12198772 chercher_mot [8]
0.05 0.00 12045671/12198772 est_mot_vide [4]
[2] 62.5 0.05 0.00 12198772 egales [2]
-----------------------------------------------
0.00 0.05 21746/21746 main [1]
[3] 62.5 0.00 0.05 21746 compter_mots_ligne [3]
0.00 0.05 250000/250000 est_mot_vide [4]
0.00 0.00 150182/150182 compter_mot [9]
-----------------------------------------------
0.00 0.05 250000/250000 compter_mots_ligne [3]
[4] 61.7 0.00 0.05 250000 est_mot_vide [4]
0.05 0.00 12045671/12198772 egales [2]
-----------------------------------------------
0.01 0.00 1/1 main [1]
[5] 12.5 0.01 0.00 1 analyser_bigrammes [5]
-----------------------------------------------
0.01 0.00 1/1 main [1]
[6] 12.5 0.01 0.00 1 decouper_lignes [6]
-----------------------------------------------
<spontaneous>
[7] 12.5 0.01 0.00 _init [7]
-----------------------------------------------
0.00 0.00 150182/150182 compter_mot [9]
[8] 0.8 0.00 0.00 150182 chercher_mot [8]
0.00 0.00 153101/12198772 egales [2]
0.00 0.00 150182/150182 hacher_mot [13]
-----------------------------------------------
0.00 0.00 150182/150182 compter_mots_ligne [3]
[9] 0.8 0.00 0.00 150182 compter_mot [9]
0.00 0.00 150182/150182 chercher_mot [8]
0.00 0.00 5866/5866 copier [19]
-----------------------------------------------
0.00 0.00 1539584/1539584 normaliser_ligne [17]
[10] 0.0 0.00 0.00 1539584 est_lettre [10]
-----------------------------------------------
0.00 0.00 1266663/1266663 normaliser_ligne [17]
[11] 0.0 0.00 0.00 1266663 en_minuscule [11]
-----------------------------------------------
0.00 0.00 27934/928117 generer_vocabulaire [24]
0.00 0.00 900183/928117 generer_texte [23]
[12] 0.0 0.00 0.00 928117 alea [12]
-----------------------------------------------
0.00 0.00 150182/150182 chercher_mot [8]
[13] 0.0 0.00 0.00 150182 hacher_mot [13]
-----------------------------------------------
0.00 0.00 129602/129602 retablir_tas [18]
[14] 0.0 0.00 0.00 129602 doit_echanger [14]
0.00 0.00 32813/32813 comparer [15]
-----------------------------------------------
0.00 0.00 32813/32813 doit_echanger [14]
[15] 0.0 0.00 0.00 32813 comparer [15]
-----------------------------------------------
0.00 0.00 5867/26801 construire_rapport [20]
0.00 0.00 20934/26801 generer_vocabulaire [24]
[16] 0.0 0.00 0.00 26801 ajouter [16]
-----------------------------------------------
0.00 0.00 21746/21746 main [1]
[17] 0.0 0.00 0.00 21746 normaliser_ligne [17]
0.00 0.00 1539584/1539584 est_lettre [10]
0.00 0.00 1266663/1266663 en_minuscule [11]
-----------------------------------------------
0.00 0.00 8798/8798 trier_entrees [27]
[18] 0.0 0.00 0.00 8798 retablir_tas [18]
0.00 0.00 129602/129602 doit_echanger [14]
-----------------------------------------------
0.00 0.00 5866/5866 compter_mot [9]
[19] 0.0 0.00 0.00 5866 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 5867/26801 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 generer_texte [23]
0.00 0.00 900183/928117 alea [12]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[24] 0.0 0.00 0.00 1 generer_vocabulaire [24]
0.00 0.00 27934/928117 alea [12]
0.00 0.00 20934/26801 ajouter [16]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[25] 0.0 0.00 0.00 1 longueur_moyenne [25]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[26] 0.0 0.00 0.00 1 racine [26]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[27] 0.0 0.00 0.00 1 trier_entrees [27]
0.00 0.00 8798/8798 retablir_tas [18]
-----------------------------------------------
Index by function name
[7] _init [19] copier [23] generer_texte
[16] ajouter [6] decouper_lignes [24] generer_vocabulaire
[12] alea [14] doit_echanger [13] hacher_mot
[5] analyser_bigrammes [21] ecart_type_longueur [25] longueur_moyenne
[8] chercher_mot [2] egales [17] normaliser_ligne
[15] comparer [22] empreinte [26] racine
[9] compter_mot [11] en_minuscule [18] retablir_tas
[3] compter_mots_ligne [10] est_lettre [27] trier_entrees
[20] construire_rapport [4] est_mot_vide
+169
View File
@@ -0,0 +1,169 @@
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls ms/call ms/call name
50.00 0.01 0.01 1 10.00 10.00 analyser_bigrammes
50.00 0.02 0.01 1 10.00 10.00 decouper_lignes
0.00 0.02 0.00 1539584 0.00 0.00 est_lettre
0.00 0.02 0.00 1266663 0.00 0.00 en_minuscule
0.00 0.02 0.00 928117 0.00 0.00 alea
0.00 0.02 0.00 355573 0.00 0.00 egales
0.00 0.02 0.00 293223 0.00 0.00 hacher_mot
0.00 0.02 0.00 250000 0.00 0.00 est_mot_vide
0.00 0.02 0.00 150182 0.00 0.00 chercher_mot
0.00 0.02 0.00 150182 0.00 0.00 compter_mot
0.00 0.02 0.00 129602 0.00 0.00 doit_echanger
0.00 0.02 0.00 32813 0.00 0.00 comparer
0.00 0.02 0.00 26801 0.00 0.00 ajouter
0.00 0.02 0.00 21746 0.00 0.00 compter_mots_ligne
0.00 0.02 0.00 21746 0.00 0.00 normaliser_ligne
0.00 0.02 0.00 8798 0.00 0.00 retablir_tas
0.00 0.02 0.00 5866 0.00 0.00 copier
0.00 0.02 0.00 1 0.00 0.00 construire_rapport
0.00 0.02 0.00 1 0.00 0.00 ecart_type_longueur
0.00 0.02 0.00 1 0.00 0.00 empreinte
0.00 0.02 0.00 1 0.00 0.00 generer_texte
0.00 0.02 0.00 1 0.00 0.00 generer_vocabulaire
0.00 0.02 0.00 1 0.00 0.00 initialiser_mots_vides
0.00 0.02 0.00 1 0.00 0.00 longueur_moyenne
0.00 0.02 0.00 1 0.00 0.00 racine
0.00 0.02 0.00 1 0.00 0.00 trier_entrees
Call graph
granularity: each sample hit covers 4 byte(s) for 50.00% of 0.02 seconds
index % time self children called name
<spontaneous>
[1] 100.0 0.00 0.02 main [1]
0.01 0.00 1/1 decouper_lignes [3]
0.01 0.00 1/1 analyser_bigrammes [2]
0.00 0.00 21746/21746 normaliser_ligne [16]
0.00 0.00 21746/21746 compter_mots_ligne [15]
0.00 0.00 1/1 generer_vocabulaire [23]
0.00 0.00 1/1 generer_texte [22]
0.00 0.00 1/1 trier_entrees [27]
0.00 0.00 1/1 longueur_moyenne [25]
0.00 0.00 1/1 ecart_type_longueur [20]
0.00 0.00 1/1 racine [26]
0.00 0.00 1/1 construire_rapport [19]
0.00 0.00 1/1 empreinte [21]
-----------------------------------------------
0.01 0.00 1/1 main [1]
[2] 50.0 0.01 0.00 1 analyser_bigrammes [2]
-----------------------------------------------
0.01 0.00 1/1 main [1]
[3] 50.0 0.01 0.00 1 decouper_lignes [3]
-----------------------------------------------
0.00 0.00 1539584/1539584 normaliser_ligne [16]
[4] 0.0 0.00 0.00 1539584 est_lettre [4]
-----------------------------------------------
0.00 0.00 1266663/1266663 normaliser_ligne [16]
[5] 0.0 0.00 0.00 1266663 en_minuscule [5]
-----------------------------------------------
0.00 0.00 27934/928117 generer_vocabulaire [23]
0.00 0.00 900183/928117 generer_texte [22]
[6] 0.0 0.00 0.00 928117 alea [6]
-----------------------------------------------
0.00 0.00 28/355573 initialiser_mots_vides [24]
0.00 0.00 153101/355573 chercher_mot [10]
0.00 0.00 202444/355573 est_mot_vide [9]
[7] 0.0 0.00 0.00 355573 egales [7]
-----------------------------------------------
0.00 0.00 60/293223 initialiser_mots_vides [24]
0.00 0.00 142981/293223 est_mot_vide [9]
0.00 0.00 150182/293223 chercher_mot [10]
[8] 0.0 0.00 0.00 293223 hacher_mot [8]
-----------------------------------------------
0.00 0.00 250000/250000 compter_mots_ligne [15]
[9] 0.0 0.00 0.00 250000 est_mot_vide [9]
0.00 0.00 202444/355573 egales [7]
0.00 0.00 142981/293223 hacher_mot [8]
0.00 0.00 1/1 initialiser_mots_vides [24]
-----------------------------------------------
0.00 0.00 150182/150182 compter_mot [11]
[10] 0.0 0.00 0.00 150182 chercher_mot [10]
0.00 0.00 153101/355573 egales [7]
0.00 0.00 150182/293223 hacher_mot [8]
-----------------------------------------------
0.00 0.00 150182/150182 compter_mots_ligne [15]
[11] 0.0 0.00 0.00 150182 compter_mot [11]
0.00 0.00 150182/150182 chercher_mot [10]
0.00 0.00 5866/5866 copier [18]
-----------------------------------------------
0.00 0.00 129602/129602 retablir_tas [17]
[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 [19]
0.00 0.00 20934/26801 generer_vocabulaire [23]
[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 compter_mots_ligne [15]
0.00 0.00 250000/250000 est_mot_vide [9]
0.00 0.00 150182/150182 compter_mot [11]
-----------------------------------------------
0.00 0.00 21746/21746 main [1]
[16] 0.0 0.00 0.00 21746 normaliser_ligne [16]
0.00 0.00 1539584/1539584 est_lettre [4]
0.00 0.00 1266663/1266663 en_minuscule [5]
-----------------------------------------------
0.00 0.00 8798/8798 trier_entrees [27]
[17] 0.0 0.00 0.00 8798 retablir_tas [17]
0.00 0.00 129602/129602 doit_echanger [12]
-----------------------------------------------
0.00 0.00 5866/5866 compter_mot [11]
[18] 0.0 0.00 0.00 5866 copier [18]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[19] 0.0 0.00 0.00 1 construire_rapport [19]
0.00 0.00 5867/26801 ajouter [14]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[20] 0.0 0.00 0.00 1 ecart_type_longueur [20]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[21] 0.0 0.00 0.00 1 empreinte [21]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[22] 0.0 0.00 0.00 1 generer_texte [22]
0.00 0.00 900183/928117 alea [6]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[23] 0.0 0.00 0.00 1 generer_vocabulaire [23]
0.00 0.00 27934/928117 alea [6]
0.00 0.00 20934/26801 ajouter [14]
-----------------------------------------------
0.00 0.00 1/1 est_mot_vide [9]
[24] 0.0 0.00 0.00 1 initialiser_mots_vides [24]
0.00 0.00 60/293223 hacher_mot [8]
0.00 0.00 28/355573 egales [7]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[25] 0.0 0.00 0.00 1 longueur_moyenne [25]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[26] 0.0 0.00 0.00 1 racine [26]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[27] 0.0 0.00 0.00 1 trier_entrees [27]
0.00 0.00 8798/8798 retablir_tas [17]
-----------------------------------------------
Index by function name
[14] ajouter [3] decouper_lignes [23] generer_vocabulaire
[6] alea [12] doit_echanger [8] hacher_mot
[2] analyser_bigrammes [20] ecart_type_longueur [24] initialiser_mots_vides
[10] chercher_mot [7] egales [25] longueur_moyenne
[13] comparer [21] empreinte [16] normaliser_ligne
[11] compter_mot [5] en_minuscule [26] racine
[15] compter_mots_ligne [4] est_lettre [17] retablir_tas
[19] construire_rapport [9] est_mot_vide [27] trier_entrees
[18] copier [22] generer_texte
+158
View File
@@ -0,0 +1,158 @@
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls ns/call ns/call name
66.67 0.02 0.02 250000 80.00 80.00 est_mot_vide
33.33 0.03 0.01 21746 459.85 459.85 normaliser_ligne
0.00 0.03 0.00 928117 0.00 0.00 alea
0.00 0.03 0.00 355573 0.00 0.00 egales
0.00 0.03 0.00 293223 0.00 0.00 hacher_mot
0.00 0.03 0.00 150182 0.00 0.00 chercher_mot
0.00 0.03 0.00 150182 0.00 0.00 compter_mot
0.00 0.03 0.00 129602 0.00 0.00 doit_echanger
0.00 0.03 0.00 32813 0.00 0.00 comparer
0.00 0.03 0.00 26801 0.00 0.00 ajouter
0.00 0.03 0.00 21746 0.00 919.71 compter_mots_ligne
0.00 0.03 0.00 8798 0.00 0.00 retablir_tas
0.00 0.03 0.00 5866 0.00 0.00 copier
0.00 0.03 0.00 1 0.00 0.00 analyser_bigrammes
0.00 0.03 0.00 1 0.00 0.00 construire_rapport
0.00 0.03 0.00 1 0.00 0.00 decouper_lignes
0.00 0.03 0.00 1 0.00 0.00 ecart_type_longueur
0.00 0.03 0.00 1 0.00 0.00 empreinte
0.00 0.03 0.00 1 0.00 0.00 generer_texte
0.00 0.03 0.00 1 0.00 0.00 generer_vocabulaire
0.00 0.03 0.00 1 0.00 0.00 initialiser_mots_vides
0.00 0.03 0.00 1 0.00 0.00 longueur_moyenne
0.00 0.03 0.00 1 0.00 0.00 racine
0.00 0.03 0.00 1 0.00 0.00 trier_entrees
Call graph
granularity: each sample hit covers 4 byte(s) for 33.33% of 0.03 seconds
index % time self children called name
<spontaneous>
[1] 100.0 0.00 0.03 main [1]
0.00 0.02 21746/21746 compter_mots_ligne [3]
0.01 0.00 21746/21746 normaliser_ligne [4]
0.00 0.00 1/1 generer_vocabulaire [21]
0.00 0.00 1/1 generer_texte [20]
0.00 0.00 1/1 decouper_lignes [17]
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 [18]
0.00 0.00 1/1 racine [24]
0.00 0.00 1/1 analyser_bigrammes [15]
0.00 0.00 1/1 construire_rapport [16]
0.00 0.00 1/1 empreinte [19]
-----------------------------------------------
0.02 0.00 250000/250000 compter_mots_ligne [3]
[2] 66.7 0.02 0.00 250000 est_mot_vide [2]
0.00 0.00 202444/355573 egales [6]
0.00 0.00 142981/293223 hacher_mot [7]
0.00 0.00 1/1 initialiser_mots_vides [22]
-----------------------------------------------
0.00 0.02 21746/21746 main [1]
[3] 66.7 0.00 0.02 21746 compter_mots_ligne [3]
0.02 0.00 250000/250000 est_mot_vide [2]
0.00 0.00 150182/150182 compter_mot [9]
-----------------------------------------------
0.01 0.00 21746/21746 main [1]
[4] 33.3 0.01 0.00 21746 normaliser_ligne [4]
-----------------------------------------------
0.00 0.00 27934/928117 generer_vocabulaire [21]
0.00 0.00 900183/928117 generer_texte [20]
[5] 0.0 0.00 0.00 928117 alea [5]
-----------------------------------------------
0.00 0.00 28/355573 initialiser_mots_vides [22]
0.00 0.00 153101/355573 chercher_mot [8]
0.00 0.00 202444/355573 est_mot_vide [2]
[6] 0.0 0.00 0.00 355573 egales [6]
-----------------------------------------------
0.00 0.00 60/293223 initialiser_mots_vides [22]
0.00 0.00 142981/293223 est_mot_vide [2]
0.00 0.00 150182/293223 chercher_mot [8]
[7] 0.0 0.00 0.00 293223 hacher_mot [7]
-----------------------------------------------
0.00 0.00 150182/150182 compter_mot [9]
[8] 0.0 0.00 0.00 150182 chercher_mot [8]
0.00 0.00 153101/355573 egales [6]
0.00 0.00 150182/293223 hacher_mot [7]
-----------------------------------------------
0.00 0.00 150182/150182 compter_mots_ligne [3]
[9] 0.0 0.00 0.00 150182 compter_mot [9]
0.00 0.00 150182/150182 chercher_mot [8]
0.00 0.00 5866/5866 copier [14]
-----------------------------------------------
0.00 0.00 129602/129602 retablir_tas [13]
[10] 0.0 0.00 0.00 129602 doit_echanger [10]
0.00 0.00 32813/32813 comparer [11]
-----------------------------------------------
0.00 0.00 32813/32813 doit_echanger [10]
[11] 0.0 0.00 0.00 32813 comparer [11]
-----------------------------------------------
0.00 0.00 5867/26801 construire_rapport [16]
0.00 0.00 20934/26801 generer_vocabulaire [21]
[12] 0.0 0.00 0.00 26801 ajouter [12]
-----------------------------------------------
0.00 0.00 8798/8798 trier_entrees [25]
[13] 0.0 0.00 0.00 8798 retablir_tas [13]
0.00 0.00 129602/129602 doit_echanger [10]
-----------------------------------------------
0.00 0.00 5866/5866 compter_mot [9]
[14] 0.0 0.00 0.00 5866 copier [14]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[15] 0.0 0.00 0.00 1 analyser_bigrammes [15]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[16] 0.0 0.00 0.00 1 construire_rapport [16]
0.00 0.00 5867/26801 ajouter [12]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[17] 0.0 0.00 0.00 1 decouper_lignes [17]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[18] 0.0 0.00 0.00 1 ecart_type_longueur [18]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[19] 0.0 0.00 0.00 1 empreinte [19]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[20] 0.0 0.00 0.00 1 generer_texte [20]
0.00 0.00 900183/928117 alea [5]
-----------------------------------------------
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 [5]
0.00 0.00 20934/26801 ajouter [12]
-----------------------------------------------
0.00 0.00 1/1 est_mot_vide [2]
[22] 0.0 0.00 0.00 1 initialiser_mots_vides [22]
0.00 0.00 60/293223 hacher_mot [7]
0.00 0.00 28/355573 egales [6]
-----------------------------------------------
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 [13]
-----------------------------------------------
Index by function name
[12] ajouter [14] copier [21] generer_vocabulaire
[5] alea [17] decouper_lignes [7] hacher_mot
[15] analyser_bigrammes [10] doit_echanger [22] initialiser_mots_vides
[8] chercher_mot [18] ecart_type_longueur [23] longueur_moyenne
[11] comparer [6] egales [4] normaliser_ligne
[9] compter_mot [19] empreinte [24] racine
[3] compter_mots_ligne [2] est_mot_vide [13] retablir_tas
[16] construire_rapport [20] generer_texte [25] trier_entrees
File diff suppressed because it is too large Load Diff
+168 -65
View File
@@ -14,9 +14,11 @@
* L'empreinte affichée à la fin doit rester IDENTIQUE après optimisation :
* elle prouve que le résultat du programme n'a pas changé.
*
* Compilation : gcc -O0 -g -pg analyseur.c -o analyseur
* Exécution : ./analyseur
* Profil : gprof ./analyseur gmon.out > profil.txt
* Depuis la racine du dépôt :
* Compilation : make
* Exécution : make run
* Validation : make check
* Profil : make profile (build/profil/profil.txt)
*/
#include <stdio.h>
@@ -26,6 +28,8 @@
#define NB_MOTS_VOCAB 7000
#define TAILLE_MOT 32
#define MAX_MOTS_UNIQUES 20000
/* Toujours moins de 50 % de cases occupées, même au maximum de mots. */
#define TAILLE_HACHAGE (2 * MAX_MOTS_UNIQUES + 1)
#define GRAINE 20261006UL
/* ------------------------------------------------------------------------ */
@@ -44,14 +48,6 @@ unsigned long alea(void)
/* Fonctions utilitaires sur les chaînes */
/* ------------------------------------------------------------------------ */
int longueur(const char *s)
{
int n = 0;
while (s[n] != '\0')
n++;
return n;
}
void copier(char *dest, const char *src)
{
int i = 0;
@@ -81,21 +77,14 @@ int comparer(const char *a, const char *b)
return (unsigned char)a[i] - (unsigned char)b[i];
}
void ajouter(char *dest, const char *src)
/* position indique la fin de dest et avance avec les caractères ajoutés. */
void ajouter(char *dest, const char *src, size_t *position)
{
copier(dest + longueur(dest), src);
}
char en_minuscule(char c)
{
if (c >= 'A' && c <= 'Z')
return c - 'A' + 'a';
return c;
}
int est_lettre(char c)
{
return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
size_t fin = *position;
for (size_t i = 0; src[i] != '\0'; i++)
dest[fin++] = src[i];
dest[fin] = '\0';
*position = fin;
}
/* ------------------------------------------------------------------------ */
@@ -111,6 +100,7 @@ static const char *MOTS_VIDES[] = {
"ses", "leur", "leurs", "mon", "ma", "mes", "ne", "pas", "plus", "est"
};
#define NB_MOTS_VIDES ((int)(sizeof(MOTS_VIDES) / sizeof(MOTS_VIDES[0])))
#define TAILLE_HACHAGE_VIDES (2 * NB_MOTS_VIDES + 1)
static const char *SYLLABES[] = {
"ba", "be", "bi", "bo", "ca", "co", "da", "de", "di", "fa", "fi", "ga",
@@ -126,9 +116,10 @@ char **generer_vocabulaire(void)
for (int i = 0; i < NB_MOTS_VOCAB; i++) {
vocab[i] = malloc(TAILLE_MOT);
vocab[i][0] = '\0';
size_t position = 0;
int nb_syllabes = 2 + alea() % 3;
for (int j = 0; j < nb_syllabes; j++)
ajouter(vocab[i], SYLLABES[alea() % NB_SYLLABES]);
ajouter(vocab[i], SYLLABES[alea() % NB_SYLLABES], &position);
}
return vocab;
}
@@ -209,12 +200,25 @@ char **decouper_lignes(const char *texte, int *nb_lignes)
void normaliser_ligne(char *ligne)
{
for (int i = 0; i < longueur(ligne); i++) {
if (est_lettre(ligne[i]))
ligne[i] = en_minuscule(ligne[i]);
else
ligne[i] = ' ';
static char conversion[256];
static int initialisee = 0;
if (!initialisee) {
for (int c = 0; c < 256; c++) {
if (c >= 'A' && c <= 'Z')
conversion[c] = (char)(c - 'A' + 'a');
else if (c >= 'a' && c <= 'z')
conversion[c] = (char)c;
else
conversion[c] = ' ';
}
conversion[0] = '\0';
initialisee = 1;
}
/* L'indice non signé couvre les 256 valeurs possibles d'un octet. */
for (int i = 0; ligne[i] != '\0'; i++)
ligne[i] = conversion[(unsigned char)ligne[i]];
}
/* ------------------------------------------------------------------------ */
@@ -224,40 +228,101 @@ void normaliser_ligne(char *ligne)
typedef struct {
char mot[TAILLE_MOT];
int occurrences;
int taille;
} Entree;
int est_mot_vide(const char *mot)
unsigned int hacher_mot(const char *mot)
{
unsigned int h = 2166136261u;
for (int i = 0; mot[i] != '\0'; i++) {
h ^= (unsigned char)mot[i];
h *= 16777619u;
}
return h;
}
/* Construire un index séparé sans modifier la liste utilisée par le générateur.
* L'index est initialement rempli de zéros ; chaque case contient indice + 1. */
static int initialiser_mots_vides(int *index_mots_vides)
{
int taille_max = 0;
for (int i = 0; i < NB_MOTS_VIDES; i++) {
if (egales(mot, MOTS_VIDES[i]))
int taille = 0;
while (MOTS_VIDES[i][taille] != '\0')
taille++;
if (taille > taille_max)
taille_max = taille;
int position = hacher_mot(MOTS_VIDES[i]) % TAILLE_HACHAGE_VIDES;
while (index_mots_vides[position] != 0 &&
!egales(MOTS_VIDES[index_mots_vides[position] - 1], MOTS_VIDES[i]))
position = (position + 1) % TAILLE_HACHAGE_VIDES;
/* Un doublon, comme "ou", réutilise la même case. */
index_mots_vides[position] = i + 1;
}
return taille_max;
}
int est_mot_vide(const char *mot, int taille)
{
static int index_mots_vides[TAILLE_HACHAGE_VIDES];
static int taille_max = -1;
if (taille_max < 0)
taille_max = initialiser_mots_vides(index_mots_vides);
/* La taille provient du découpage : aucun nouveau parcours du mot. */
if (taille > taille_max)
return 0;
int position = hacher_mot(mot) % TAILLE_HACHAGE_VIDES;
while (index_mots_vides[position] != 0) {
if (egales(mot, MOTS_VIDES[index_mots_vides[position] - 1]))
return 1;
position = (position + 1) % TAILLE_HACHAGE_VIDES;
}
return 0;
}
int chercher_mot(Entree *table, int nb_entrees, const char *mot)
/* L'index contient indice + 1 ; zéro désigne une case libre.
* Renvoie l'indice du mot, ou -(case libre + 1) s'il est absent. */
int chercher_mot(const Entree *table, const int *index_mots, const char *mot)
{
for (int i = 0; i < nb_entrees; i++) {
if (egales(table[i].mot, mot))
return i;
int position = hacher_mot(mot) % TAILLE_HACHAGE;
while (index_mots[position] != 0) {
int indice = index_mots[position] - 1;
if (egales(table[indice].mot, mot))
return indice;
/* Collision : essayer la case suivante, avec retour au début. */
position = (position + 1) % TAILLE_HACHAGE;
}
return -1;
return -(position + 1);
}
void compter_mot(Entree *table, int *nb_entrees, const char *mot)
void compter_mot(Entree *table, int *nb_entrees, int *index_mots,
const char *mot, int taille)
{
int indice = chercher_mot(table, *nb_entrees, mot);
int indice = chercher_mot(table, index_mots, mot);
if (indice >= 0) {
table[indice].occurrences++;
} else {
copier(table[*nb_entrees].mot, mot);
table[*nb_entrees].occurrences = 1;
if (*nb_entrees >= MAX_MOTS_UNIQUES) {
fprintf(stderr, "Trop de mots distincts (maximum : %d).\n",
MAX_MOTS_UNIQUES);
exit(EXIT_FAILURE);
}
int position = -indice - 1;
indice = *nb_entrees;
copier(table[indice].mot, mot);
table[indice].occurrences = 1;
table[indice].taille = taille;
index_mots[position] = indice + 1;
(*nb_entrees)++;
}
}
void compter_mots_ligne(Entree *table, int *nb_entrees, const char *ligne,
long *nb_mots_total)
void compter_mots_ligne(Entree *table, int *nb_entrees, int *index_mots,
const char *ligne, long *nb_mots_total)
{
char mot[TAILLE_MOT];
int i = 0;
@@ -274,8 +339,8 @@ void compter_mots_ligne(Entree *table, int *nb_entrees, const char *ligne,
mot[k] = '\0';
if (k > 0) {
(*nb_mots_total)++;
if (!est_mot_vide(mot))
compter_mot(table, nb_entrees, mot);
if (!est_mot_vide(mot, k))
compter_mot(table, nb_entrees, index_mots, mot, k);
}
}
}
@@ -291,16 +356,33 @@ int doit_echanger(const Entree *a, const Entree *b)
return comparer(a->mot, b->mot) > 0;
}
/* La racine du tas est l'entrée qui doit apparaître le plus tard. */
void retablir_tas(Entree *table, int n, int racine)
{
while (racine < n / 2) {
int enfant = 2 * racine + 1;
if (enfant + 1 < n && doit_echanger(&table[enfant + 1], &table[enfant]))
enfant++;
if (!doit_echanger(&table[enfant], &table[racine]))
break;
Entree tmp = table[racine];
table[racine] = table[enfant];
table[enfant] = tmp;
racine = enfant;
}
}
void trier_entrees(Entree *table, int n)
{
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (doit_echanger(&table[j], &table[j + 1])) {
Entree tmp = table[j];
table[j] = table[j + 1];
table[j + 1] = tmp;
}
}
/* Construire le tas, puis placer chaque racine à sa position finale. */
for (int i = n / 2 - 1; i >= 0; i--)
retablir_tas(table, n, i);
for (int fin = n - 1; fin > 0; fin--) {
Entree tmp = table[0];
table[0] = table[fin];
table[fin] = tmp;
retablir_tas(table, fin, 0);
}
}
@@ -312,22 +394,24 @@ double longueur_moyenne(const Entree *table, int n)
{
long total = 0;
for (int i = 0; i < n; i++)
total += longueur(table[i].mot);
total += table[i].taille;
return (double)total / n;
}
double ecart_type_longueur(const Entree *table, int n)
/* Réutiliser la moyenne calculée dans main évite de la recalculer par mot. */
double ecart_type_longueur(const Entree *table, int n, double moyenne)
{
double somme = 0.0;
for (int i = 0; i < n; i++) {
double ecart = longueur(table[i].mot) - longueur_moyenne(table, n);
double ecart = table[i].taille - moyenne;
somme += ecart * ecart;
}
return somme / n; /* variance ; la racine est prise dans main */
}
/* Recherche du bigramme de lettres le plus fréquent, avec en bonus la
* troisième lettre qui le suit le plus souvent. */
* troisième lettre qui le suit le plus souvent.
* Les lignes doivent être normalisées : lettres 'a' à 'z' ou espaces. */
void analyser_bigrammes(char **lignes, int nb_lignes,
char *meilleur, int *occ_meilleur)
{
@@ -335,9 +419,18 @@ void analyser_bigrammes(char **lignes, int nb_lignes,
for (int l = 0; l < nb_lignes; l++) {
const char *s = lignes[l];
for (int i = 0; s[i] != '\0' && s[i + 1] != '\0' && s[i + 2] != '\0'; i++) {
if (est_lettre(s[i]) && est_lettre(s[i + 1]) && est_lettre(s[i + 2]))
trigrammes[s[i] - 'a'][s[i + 1] - 'a'][s[i + 2] - 'a']++;
int avant_dernier = -1;
int dernier = -1;
for (int i = 0; s[i] != '\0'; i++) {
if (s[i] == ' ') {
avant_dernier = dernier = -1;
continue;
}
int lettre = s[i] - 'a';
if (avant_dernier >= 0)
trigrammes[avant_dernier][dernier][lettre]++;
avant_dernier = dernier;
dernier = lettre;
}
}
@@ -371,12 +464,13 @@ char *construire_rapport(const Entree *table, int n)
char *rapport = malloc((size_t)n * 64 + 256);
char ligne[128];
rapport[0] = '\0';
size_t position = 0;
ajouter(rapport, "rang;mot;occurrences\n");
ajouter(rapport, "rang;mot;occurrences\n", &position);
for (int i = 0; i < n; i++) {
snprintf(ligne, sizeof(ligne), "%d;%s;%d\n",
i + 1, table[i].mot, table[i].occurrences);
ajouter(rapport, ligne);
ajouter(rapport, ligne, &position);
}
return rapport;
}
@@ -412,15 +506,24 @@ int main(void)
normaliser_ligne(lignes[i]);
Entree *table = malloc(MAX_MOTS_UNIQUES * sizeof(Entree));
int *index_mots = calloc(TAILLE_HACHAGE, sizeof(int));
if (table == NULL || index_mots == NULL) {
fprintf(stderr, "Allocation du tableau de comptage impossible.\n");
free(table);
free(index_mots);
exit(EXIT_FAILURE);
}
int nb_entrees = 0;
long nb_mots_total = 0;
for (int i = 0; i < nb_lignes; i++)
compter_mots_ligne(table, &nb_entrees, lignes[i], &nb_mots_total);
compter_mots_ligne(table, &nb_entrees, index_mots, lignes[i], &nb_mots_total);
/* Le tri déplace les entrées : l'index ne sert que pendant le comptage. */
free(index_mots);
trier_entrees(table, nb_entrees);
double moyenne = longueur_moyenne(table, nb_entrees);
double ecart_type = racine(ecart_type_longueur(table, nb_entrees));
double ecart_type = racine(ecart_type_longueur(table, nb_entrees, moyenne));
char trigramme[4];
int occ_trigramme;