Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2878461ebd | |||
| c9b14f4c2e | |||
| ed2e1cd102 | |||
| e99abeb267 | |||
| 57c9ce933b | |||
| 1c4405c75e | |||
| 57aaec48d0 | |||
| d3f19871d7 | |||
| be387e2066 | |||
| 55320bdfea | |||
| e6b452bdbe |
@@ -0,0 +1,68 @@
|
||||
# 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 suivantes utilisent la médiane de
|
||||
cinq exécutions par version.
|
||||
|
||||
| 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 % |
|
||||
|
||||
La version finale 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.
|
||||
|
||||
## 4. Bilan et validation
|
||||
|
||||
Une comparaison directe des versions initiale et finale donne les médianes
|
||||
suivantes, sur cinq exécutions par version dans les mêmes conditions :
|
||||
|
||||
| Mesure | Version initiale | Version finale |
|
||||
| --- | ---: | ---: |
|
||||
| Temps réel | 2,81 s | 0,11 s |
|
||||
| Pic mémoire résident (RSS) | 6 664 Kio | 6 668 Kio |
|
||||
|
||||
Le programme est environ **25,5 fois plus rapide**, soit **96,1 % de temps
|
||||
en moins** sur ce jeu de données.
|
||||
|
||||
Le rapport et la sortie console sont identiques octet par octet.
|
||||
L'empreinte reste **`1d53de903efd2b7c`**.
|
||||
|
||||
Sources : [notes](notes.md), [profil initial](out/profil_avant.txt),
|
||||
[profil final](out/profil_apres_tri.txt) et [mesures globales](out/mesures_bilan.csv).
|
||||
@@ -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.
|
||||
+96
-40
@@ -14,7 +14,7 @@
|
||||
* 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
|
||||
* Compilation : gcc -O0 -pg analyseur.c -o analyseur
|
||||
* Exécution : ./analyseur
|
||||
* Profil : gprof ./analyseur gmon.out > profil.txt
|
||||
*/
|
||||
@@ -26,6 +26,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 +46,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,9 +75,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);
|
||||
size_t fin = *position;
|
||||
for (size_t i = 0; src[i] != '\0'; i++)
|
||||
dest[fin++] = src[i];
|
||||
dest[fin] = '\0';
|
||||
*position = fin;
|
||||
}
|
||||
|
||||
char en_minuscule(char c)
|
||||
@@ -126,9 +125,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,7 +209,7 @@ char **decouper_lignes(const char *texte, int *nb_lignes)
|
||||
|
||||
void normaliser_ligne(char *ligne)
|
||||
{
|
||||
for (int i = 0; i < longueur(ligne); i++) {
|
||||
for (int i = 0; ligne[i] != '\0'; i++) {
|
||||
if (est_lettre(ligne[i]))
|
||||
ligne[i] = en_minuscule(ligne[i]);
|
||||
else
|
||||
@@ -224,6 +224,7 @@ void normaliser_ligne(char *ligne)
|
||||
typedef struct {
|
||||
char mot[TAILLE_MOT];
|
||||
int occurrences;
|
||||
int taille;
|
||||
} Entree;
|
||||
|
||||
int est_mot_vide(const char *mot)
|
||||
@@ -235,29 +236,56 @@ int est_mot_vide(const char *mot)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int chercher_mot(Entree *table, int nb_entrees, const char *mot)
|
||||
unsigned int hacher_mot(const char *mot)
|
||||
{
|
||||
for (int i = 0; i < nb_entrees; i++) {
|
||||
if (egales(table[i].mot, mot))
|
||||
return i;
|
||||
unsigned int h = 2166136261u;
|
||||
for (int i = 0; mot[i] != '\0'; i++) {
|
||||
h ^= (unsigned char)mot[i];
|
||||
h *= 16777619u;
|
||||
}
|
||||
return -1;
|
||||
return h;
|
||||
}
|
||||
|
||||
void compter_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)
|
||||
{
|
||||
int indice = chercher_mot(table, *nb_entrees, mot);
|
||||
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 -(position + 1);
|
||||
}
|
||||
|
||||
void compter_mot(Entree *table, int *nb_entrees, int *index_mots,
|
||||
const char *mot, int taille)
|
||||
{
|
||||
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;
|
||||
@@ -275,7 +303,7 @@ void compter_mots_ligne(Entree *table, int *nb_entrees, const char *ligne,
|
||||
if (k > 0) {
|
||||
(*nb_mots_total)++;
|
||||
if (!est_mot_vide(mot))
|
||||
compter_mot(table, nb_entrees, mot);
|
||||
compter_mot(table, nb_entrees, index_mots, mot, k);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -291,16 +319,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,15 +357,16 @@ 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 */
|
||||
@@ -371,12 +417,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 +459,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;
|
||||
|
||||
@@ -0,0 +1,445 @@
|
||||
Lancement du programme après la compilation avec `gcc -O0 analyseur.c -o analyseur`
|
||||
|
||||
```bash
|
||||
Lignes analysées : 21746
|
||||
Mots au total : 250000
|
||||
Mots distincts : 5866
|
||||
Longueur moyenne : 6.712 (écart-type 1.873)
|
||||
Bigramme le + courant : "me" (17607 fois, souvent suivi de 'n')
|
||||
|
||||
Top 10 :
|
||||
1. rane 287
|
||||
2. fasi 241
|
||||
3. tata 219
|
||||
4. mopo 214
|
||||
5. cofi 180
|
||||
6. vesi 179
|
||||
7. laganomo 177
|
||||
8. boto 172
|
||||
9. nopebo 169
|
||||
10. rotion 165
|
||||
|
||||
Empreinte du rapport : 1d53de903efd2b7c
|
||||
```
|
||||
|
||||
Et ensuite la commande time sur l'exécutable avec `time ./analyseur `
|
||||
|
||||
```bash
|
||||
Lignes analysées : 21746
|
||||
Mots au total : 250000
|
||||
Mots distincts : 5866
|
||||
Longueur moyenne : 6.712 (écart-type 1.873)
|
||||
Bigramme le + courant : "me" (17607 fois, souvent suivi de 'n')
|
||||
|
||||
Top 10 :
|
||||
1. rane 287
|
||||
2. fasi 241
|
||||
3. tata 219
|
||||
4. mopo 214
|
||||
5. cofi 180
|
||||
6. vesi 179
|
||||
7. laganomo 177
|
||||
8. boto 172
|
||||
9. nopebo 169
|
||||
10. rotion 165
|
||||
|
||||
Empreinte du rapport : 1d53de903efd2b7c
|
||||
|
||||
real 0m2.858s
|
||||
user 0m2.821s
|
||||
sys 0m0.013s
|
||||
```
|
||||
|
||||
On recompile avec le flag `-pg` : `gcc -O0 -pg analyseur.c -o analyseur`
|
||||
Et on relance `time` dessus
|
||||
|
||||
```bash
|
||||
Lignes analysées : 21746
|
||||
Mots au total : 250000
|
||||
Mots distincts : 5866
|
||||
Longueur moyenne : 6.712 (écart-type 1.873)
|
||||
Bigramme le + courant : "me" (17607 fois, souvent suivi de 'n')
|
||||
|
||||
Top 10 :
|
||||
1. rane 287
|
||||
2. fasi 241
|
||||
3. tata 219
|
||||
4. mopo 214
|
||||
5. cofi 180
|
||||
6. vesi 179
|
||||
7. laganomo 177
|
||||
8. boto 172
|
||||
9. nopebo 169
|
||||
10. rotion 165
|
||||
|
||||
Empreinte du rapport : 1d53de903efd2b7c
|
||||
|
||||
real 0m6.354s
|
||||
user 0m6.295s
|
||||
sys 0m0.020s
|
||||
```
|
||||
|
||||
On lance `gprof` : `gprof -b ./analyseur gmon.out > profil_avant.txt`
|
||||
|
||||
## Optimisation de `chercher_mot` : recherche dichotomique
|
||||
|
||||
La recherche initiale parcourait toutes les entrées jusqu'à trouver le mot.
|
||||
Pour 150 182 recherches, elle effectuait 296 656 203 appels à `egales()`.
|
||||
|
||||
Le tableau est maintenant maintenu dans l'ordre alphabétique pendant le
|
||||
comptage. `chercher_mot` utilise `comparer()` pour éliminer la moitié des
|
||||
entrées restantes à chaque étape : la recherche passe de O(n) à O(log n).
|
||||
Si le mot est absent, la fonction renvoie `-(position d'insertion + 1)` ;
|
||||
`compter_mot` retrouve cette position avec `-indice - 1`, décale les entrées
|
||||
et insère le nouveau mot. Cette insertion reste en O(n), mais elle n'a lieu
|
||||
qu'à la première apparition de chacun des 5 866 mots distincts.
|
||||
Le tableau existant est réutilisé, sans allocation supplémentaire.
|
||||
Le tri final par fréquence produit le même classement.
|
||||
|
||||
Résultats du nouveau profil, conservé dans [out/profil_apres.txt](out/profil_apres.txt) :
|
||||
|
||||
| Mesure | Avant | Après |
|
||||
| --- | ---: | ---: |
|
||||
| Appels de `chercher_mot` | 150 182 | 150 182 |
|
||||
| Appels à `egales()` depuis `chercher_mot` | 296 656 203 | 0 |
|
||||
| Comparaisons de chaînes dans `chercher_mot` | 296 656 203 | 1 718 447 |
|
||||
| Appels à `egales()` dans tout le programme | 308 701 874 | 12 045 671 |
|
||||
| Temps réel sans profiling (`gcc -O0`) | 2,80 s | 1,45 s |
|
||||
|
||||
Les recherches effectuent environ 173 fois moins de comparaisons.
|
||||
Les appels restants à `egales()` viennent de `est_mot_vide`.
|
||||
Les temps ci-dessus correspondent à une mesure avant/après sur la même
|
||||
machine pendant cette modification : environ 48 % de temps en moins
|
||||
(accélération d'environ 1,93). Ce sont des mesures ponctuelles.
|
||||
|
||||
Validation : compilation avec `-Wall -Wextra -Wpedantic`, rapport et sortie
|
||||
console identiques octet par octet à la version initiale, avec et sans `-pg`.
|
||||
L'empreinte reste **`1d53de903efd2b7c`**.
|
||||
Un test temporaire sous AddressSanitizer et UndefinedBehaviorSanitizer a
|
||||
également vérifié les recherches dans un tableau vide, les mots présents
|
||||
ou absents, les insertions au début/milieu/fin, les doublons et les mots de
|
||||
31 caractères, puis comparé 10 000 comptages à une référence linéaire.
|
||||
|
||||
Pour reproduire le profil sans écraser les fichiers du profil initial :
|
||||
|
||||
```bash
|
||||
mkdir -p out/apres
|
||||
gcc -O0 -pg analyseur.c -o out/apres/analyseur
|
||||
(cd out/apres && ./analyseur && gprof -b ./analyseur gmon.out > ../profil_apres.txt)
|
||||
```
|
||||
|
||||
```bash
|
||||
Lignes analysées : 21746
|
||||
Mots au total : 250000
|
||||
Mots distincts : 5866
|
||||
Longueur moyenne : 6.712 (écart-type 1.873)
|
||||
Bigramme le + courant : "me" (17607 fois, souvent suivi de 'n')
|
||||
|
||||
Top 10 :
|
||||
1. rane 287
|
||||
2. fasi 241
|
||||
3. tata 219
|
||||
4. mopo 214
|
||||
5. cofi 180
|
||||
6. vesi 179
|
||||
7. laganomo 177
|
||||
8. boto 172
|
||||
9. nopebo 169
|
||||
10. rotion 165
|
||||
|
||||
Empreinte du rapport : 1d53de903efd2b7c
|
||||
|
||||
real 0m1.986s
|
||||
user 0m1.934s
|
||||
sys 0m0.011s
|
||||
```
|
||||
|
||||
## Optimisation des appels à `longueur_moyenne`
|
||||
|
||||
`longueur_moyenne` parcourt les mots une fois par appel. Le coût excessif
|
||||
venait de `ecart_type_longueur`, qui recalculait cette même moyenne à
|
||||
chaque itération, soit 5 866 fois. Avec l'appel de `main`, cela représentait
|
||||
5 867 calculs de moyenne et 34 415 822 appels à `longueur()`.
|
||||
|
||||
`main` calcule désormais la moyenne une seule fois et la transmet en
|
||||
paramètre à `ecart_type_longueur`. La boucle utilise directement cette
|
||||
valeur. Le calcul des statistiques passe ainsi de O(n²) à O(n), sans
|
||||
allocation supplémentaire ni modification de la formule de variance.
|
||||
|
||||
Profil enregistré dans [out/profil_apres_moyenne.txt](out/profil_apres_moyenne.txt).
|
||||
La colonne « Avant » correspond à la version déjà optimisée pour
|
||||
`chercher_mot`, dont le profil reste dans `out/profil_apres.txt`.
|
||||
|
||||
| Mesure | Avant | Après |
|
||||
| --- | ---: | ---: |
|
||||
| Appels à `longueur_moyenne` | 5 867 | 1 |
|
||||
| Appels à `longueur()` depuis `longueur_moyenne` | 34 415 822 | 5 866 |
|
||||
| Appels à `longueur()` dans tout le programme | 36 009 819 | 1 599 863 |
|
||||
| Temps réel sans profiling (`gcc -O0`) | 1,46 s | 0,88 s |
|
||||
|
||||
Cette mesure ponctuelle sur la même machine donne environ 40 % de temps
|
||||
en moins, soit une accélération d'environ 1,66 par rapport à l'étape précédente.
|
||||
|
||||
Validation : compilation avec `-Wall -Wextra -Wpedantic` sans avertissement,
|
||||
puis comparaison du rapport et de la sortie console avant/après, avec et
|
||||
sans `-pg`. Ils restent identiques octet par octet, y compris la moyenne
|
||||
(`6.712`) et l'écart-type (`1.873`). L'empreinte reste **`1d53de903efd2b7c`**.
|
||||
|
||||
Commandes pour reproduire ce profil :
|
||||
|
||||
```bash
|
||||
mkdir -p out/apres_moyenne
|
||||
gcc -O0 -pg analyseur.c -o out/apres_moyenne/analyseur
|
||||
(cd out/apres_moyenne && ./analyseur && gprof -b ./analyseur gmon.out > ../profil_apres_moyenne.txt)
|
||||
```
|
||||
|
||||
```bash
|
||||
[rabot@salle235-06 out]$ time ./analyseur
|
||||
Lignes analysées : 21746
|
||||
Mots au total : 250000
|
||||
Mots distincts : 5866
|
||||
Longueur moyenne : 6.712 (écart-type 1.873)
|
||||
Bigramme le + courant : "me" (17607 fois, souvent suivi de 'n')
|
||||
|
||||
Top 10 :
|
||||
1. rane 287
|
||||
2. fasi 241
|
||||
3. tata 219
|
||||
4. mopo 214
|
||||
5. cofi 180
|
||||
6. vesi 179
|
||||
7. laganomo 177
|
||||
8. boto 172
|
||||
9. nopebo 169
|
||||
10. rotion 165
|
||||
|
||||
Empreinte du rapport : 1d53de903efd2b7c
|
||||
|
||||
real 0m1.251s
|
||||
user 0m1.214s
|
||||
sys 0m0.004s
|
||||
```
|
||||
|
||||
## Remplacement de la dichotomie par une table de hachage
|
||||
|
||||
Un index de 40 001 cases associe chaque mot à son entrée dans le tableau.
|
||||
`hacher_mot` calcule un entier à partir des caractères du mot ; le modulo
|
||||
donne la première case à examiner. Chaque case contient l'indice de
|
||||
l'entrée + 1, ou zéro si elle est libre.
|
||||
|
||||
En cas de collision, `chercher_mot` vérifie le mot avec `egales()` puis
|
||||
avance à la case suivante, en revenant au début si nécessaire. Deux mots
|
||||
ayant le même hachage restent donc bien distincts. Les nouveaux mots sont
|
||||
ajoutés à la fin du tableau, sans décaler les entrées existantes.
|
||||
|
||||
La recherche et l'insertion sont en O(1) en moyenne pour ces mots de
|
||||
longueur bornée, avec un pire cas en O(n) en cas de nombreuses collisions.
|
||||
La limite de 20 000 mots distincts est vérifiée avant chaque nouvelle
|
||||
insertion ; avec 40 001 cases, l'index reste rempli à moins de 50 %.
|
||||
|
||||
Ce choix ajoute `40 001 * sizeof(int)` octets, soit environ 156 Kio sur
|
||||
cette machine. L'index est libéré après le comptage, avant le tri final
|
||||
qui déplace les entrées. L'empreinte du rapport est conservée, mais cette
|
||||
version utilise davantage de mémoire pendant le comptage.
|
||||
|
||||
Profil enregistré dans [out/profil_apres_hachage.txt](out/profil_apres_hachage.txt).
|
||||
La comparaison porte sur la version précédente avec dichotomie et moyenne
|
||||
calculée une seule fois, conservée dans `out/profil_apres_moyenne.txt`.
|
||||
|
||||
| Mesure | Dichotomie | Hachage |
|
||||
| --- | ---: | ---: |
|
||||
| Appels de `chercher_mot` | 150 182 | 150 182 |
|
||||
| Comparaisons de chaînes dans `chercher_mot` | 1 718 447 (`comparer`) | 153 101 (`egales`) |
|
||||
| Temps réel médian sans profiling (`gcc -O0`, 5 exécutions par version) | 0,888 s | 0,831 s |
|
||||
|
||||
Les recherches font environ 11,2 fois moins de comparaisons. Le temps
|
||||
total baisse d'environ 6,4 % : le gain reste limité car la normalisation
|
||||
et le tri occupent désormais l'essentiel du temps. L'ordre d'arrivée des
|
||||
mots remplace l'ordre alphabétique pendant le comptage ; le tri final
|
||||
effectue donc un nombre différent de comparaisons, tout en produisant
|
||||
le même classement.
|
||||
|
||||
Les cinq mesures, réalisées en alternant les deux versions sur la même
|
||||
machine, sont respectivement : 0,883 / 0,892 / 0,888 / 0,883 / 0,888 s
|
||||
avant, et 0,831 / 0,830 / 0,831 / 0,832 / 0,829 s après.
|
||||
|
||||
Validation : compilation sans avertissement avec `-Wall -Wextra -Wpedantic`,
|
||||
rapport et sortie console identiques octet par octet sur les dix
|
||||
exécutions et avec `-pg`. L'empreinte reste **`1d53de903efd2b7c`**.
|
||||
Des tests temporaires sous AddressSanitizer et UndefinedBehaviorSanitizer
|
||||
ont vérifié les collisions avec retour à la première case, les doublons,
|
||||
les mots de 0/1/31 caractères, 10 000 comptages comparés à une référence
|
||||
linéaire, les 20 000 entrées possibles et le refus d'un dépassement.
|
||||
Le programme complet a également été exécuté avec ces deux outils,
|
||||
sans erreur et avec une sortie identique.
|
||||
|
||||
Commandes pour reproduire ce profil :
|
||||
|
||||
```bash
|
||||
mkdir -p out/apres_hachage
|
||||
gcc -O0 -pg analyseur.c -o out/apres_hachage/analyseur
|
||||
(cd out/apres_hachage && ./analyseur && gprof -b ./analyseur gmon.out > ../profil_apres_hachage.txt)
|
||||
```
|
||||
|
||||
## Longueurs mémorisées et suppression des parcours répétés
|
||||
|
||||
Le champ `taille` de `Entree` mémorise la longueur du mot à son insertion.
|
||||
La valeur vient directement de `k`, déjà calculé dans `compter_mots_ligne` :
|
||||
aucun parcours supplémentaire n'est nécessaire. La moyenne et la variance
|
||||
lisent désormais ce champ. Le tri déplace l'entrée entière, donc la longueur
|
||||
reste associée au bon mot. Pour un mot tronqué, la taille enregistrée est
|
||||
celle du mot conservé, soit au maximum 31 caractères.
|
||||
|
||||
Deux autres changements éliminent les recalculs sur les chaînes longues :
|
||||
|
||||
- `normaliser_ligne` s'arrête directement sur `ligne[i] == '\0'`. Le parcours
|
||||
d'une ligne de L caractères passe de O(L²) à O(L).
|
||||
- `ajouter` reçoit une position de fin, qu'il avance pendant la copie des
|
||||
caractères ajoutés. Cette position est conservée lors de la construction
|
||||
du rapport et réinitialisée pour chaque mot du vocabulaire. Le préfixe
|
||||
déjà construit n'est plus parcouru à chaque ajout.
|
||||
|
||||
La fonction `longueur`, devenue inutilisée, a été supprimée.
|
||||
Le champ supplémentaire fait passer `sizeof(Entree)` de 36 à 40 octets sur
|
||||
cette machine : le tableau alloué pour 20 000 entrées prend 80 000 octets
|
||||
supplémentaires, soit environ 78 Kio.
|
||||
|
||||
Profil enregistré dans [out/profil_apres_longueurs.txt](out/profil_apres_longueurs.txt).
|
||||
La version précédente, avec la table de hachage, est décrite dans
|
||||
`out/profil_apres_hachage.txt`.
|
||||
|
||||
| Mesure | Avant | Après |
|
||||
| --- | ---: | ---: |
|
||||
| Appels à `longueur()` depuis les statistiques | 11 732 | 0 |
|
||||
| Appels à `longueur()` depuis `normaliser_ligne` | 1 561 330 | 0 |
|
||||
| Appels à `longueur()` depuis `ajouter` | 26 801 | 0 |
|
||||
| Appels à `longueur()` au total | 1 599 863 | 0 |
|
||||
| Temps réel médian sans profiling (`gcc -O0`, 5 exécutions par version) | 0,832 s | 0,362 s |
|
||||
|
||||
Le temps total baisse de 56,5 %, soit une accélération d'environ 2,30.
|
||||
Cette mesure porte sur l'ensemble des trois changements, et ne doit pas
|
||||
être attribuée uniquement au stockage de la longueur des mots.
|
||||
|
||||
Les cinq mesures, réalisées en alternant les deux versions sur la même
|
||||
machine, sont respectivement : 0,835 / 0,838 / 0,830 / 0,832 / 0,829 s
|
||||
avant, et 0,362 / 0,369 / 0,366 / 0,362 / 0,361 s après.
|
||||
|
||||
Validation : compilation sans avertissement avec `-Wall -Wextra -Wpedantic`,
|
||||
rapport et sortie console identiques octet par octet sur les dix exécutions,
|
||||
avec `-pg` et sous AddressSanitizer et UndefinedBehaviorSanitizer.
|
||||
L'empreinte reste **`1d53de903efd2b7c`**, la moyenne `6.712` et l'écart-type
|
||||
`1.873`. Des tests temporaires ont également vérifié les ajouts vides et
|
||||
successifs jusqu'à la limite d'un tampon, la normalisation, les longueurs
|
||||
avant/après tri, les statistiques, le rapport vide et les mots tronqués.
|
||||
|
||||
Commandes pour reproduire ce profil :
|
||||
|
||||
```bash
|
||||
mkdir -p out/apres_longueurs
|
||||
gcc -O0 -pg analyseur.c -o out/apres_longueurs/analyseur
|
||||
(cd out/apres_longueurs && ./analyseur && gprof -b ./analyseur gmon.out > ../profil_apres_longueurs.txt)
|
||||
```
|
||||
|
||||
```bash
|
||||
[rabot@salle235-06 out]$ time ./analyseur
|
||||
Lignes analysées : 21746
|
||||
Mots au total : 250000
|
||||
Mots distincts : 5866
|
||||
Longueur moyenne : 6.712 (écart-type 1.873)
|
||||
Bigramme le + courant : "me" (17607 fois, souvent suivi de 'n')
|
||||
|
||||
Top 10 :
|
||||
1. rane 287
|
||||
2. fasi 241
|
||||
3. tata 219
|
||||
4. mopo 214
|
||||
5. cofi 180
|
||||
6. vesi 179
|
||||
7. laganomo 177
|
||||
8. boto 172
|
||||
9. nopebo 169
|
||||
10. rotion 165
|
||||
|
||||
Empreinte du rapport : 1d53de903efd2b7c
|
||||
|
||||
real 0m0.751s
|
||||
user 0m0.703s
|
||||
sys 0m0.004s
|
||||
```
|
||||
|
||||
## Remplacement du tri à bulles par un tri par tas
|
||||
|
||||
Le tri à bulles effectuait systématiquement n(n - 1)/2 comparaisons,
|
||||
soit 17 202 045 appels à `doit_echanger` pour 5 866 mots distincts.
|
||||
|
||||
`trier_entrees` utilise maintenant un tri par tas. La racine du tas contient
|
||||
l'entrée qui doit apparaître le plus tard dans le classement. Elle est
|
||||
échangée avec la dernière entrée de la partie non triée, puis `retablir_tas`
|
||||
restaure cette propriété sur les entrées restantes. La construction du tas
|
||||
coûte O(n), puis les extractions coûtent O(log n) chacune : le tri complet
|
||||
passe de O(n²) à O(n log n), y compris dans le pire cas.
|
||||
|
||||
Le tri travaille directement dans le tableau, avec O(1) de mémoire
|
||||
supplémentaire. `doit_echanger` reste inchangée : fréquence décroissante,
|
||||
puis ordre alphabétique croissant. Chaque échange déplace l'entrée entière,
|
||||
y compris la longueur mémorisée.
|
||||
|
||||
Profil enregistré dans [out/profil_apres_tri.txt](out/profil_apres_tri.txt).
|
||||
La comparaison porte sur la version précédente, décrite dans
|
||||
`out/profil_apres_longueurs.txt`.
|
||||
|
||||
| Mesure | Tri à bulles | Tri par tas |
|
||||
| --- | ---: | ---: |
|
||||
| Appels à `doit_echanger` pendant le tri | 17 202 045 | 129 602 |
|
||||
| Appels à `comparer` pour départager les fréquences égales | 12 172 087 | 32 813 |
|
||||
| Temps réel médian du programme sans profiling (`gcc -O0`, 5 exécutions par version) | 0,367 s | 0,113 s |
|
||||
|
||||
Le tri effectue environ 133 fois moins de comparaisons d'entrées.
|
||||
Le temps total baisse de 69,3 %, soit une accélération d'environ 3,25.
|
||||
Les cinq mesures, réalisées en alternant les deux versions sur la même
|
||||
machine, sont respectivement : 0,365 / 0,363 / 0,372 / 0,383 / 0,367 s
|
||||
avant, et 0,112 / 0,113 / 0,115 / 0,113 / 0,112 s après.
|
||||
|
||||
Validation : compilation sans avertissement avec `-Wall -Wextra -Wpedantic`,
|
||||
rapport et sortie console identiques octet par octet sur les dix exécutions,
|
||||
avec `-pg` et sous AddressSanitizer et UndefinedBehaviorSanitizer.
|
||||
L'empreinte reste **`1d53de903efd2b7c`**.
|
||||
Des tests temporaires ont comparé le résultat à `qsort` sur des tableaux
|
||||
de 0 à 20 000 entrées, aléatoires, déjà triés ou inversés. Ils vérifient
|
||||
aussi les fréquences égales, les doublons, les préfixes, les valeurs
|
||||
extrêmes de fréquence et la conservation des longueurs des mots.
|
||||
|
||||
Commandes pour reproduire ce profil :
|
||||
|
||||
```bash
|
||||
mkdir -p out/apres_tri
|
||||
gcc -O0 -pg analyseur.c -o out/apres_tri/analyseur
|
||||
(cd out/apres_tri && ./analyseur && gprof -b ./analyseur gmon.out > ../profil_apres_tri.txt)
|
||||
```
|
||||
|
||||
```bash
|
||||
[rabot@salle235-06 out]$ time ./analyseur
|
||||
Lignes analysées : 21746
|
||||
Mots au total : 250000
|
||||
Mots distincts : 5866
|
||||
Longueur moyenne : 6.712 (écart-type 1.873)
|
||||
Bigramme le + courant : "me" (17607 fois, souvent suivi de 'n')
|
||||
|
||||
Top 10 :
|
||||
1. rane 287
|
||||
2. fasi 241
|
||||
3. tata 219
|
||||
4. mopo 214
|
||||
5. cofi 180
|
||||
6. vesi 179
|
||||
7. laganomo 177
|
||||
8. boto 172
|
||||
9. nopebo 169
|
||||
10. rotion 165
|
||||
|
||||
Empreinte du rapport : 1d53de903efd2b7c
|
||||
|
||||
real 0m0.354s
|
||||
user 0m0.314s
|
||||
sys 0m0.008s
|
||||
```
|
||||
Executable
BIN
Binary file not shown.
Binary file not shown.
@@ -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
|
||||
|
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
+5867
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user