Documenter le TD et conserver les profils et mesures reproductibles

This commit is contained in:
2026-10-07 10:39:40 +02:00
parent 1d0757868d
commit b5ac7a3c89
57 changed files with 25230 additions and 0 deletions
+457
View File
@@ -0,0 +1,457 @@
/*
* R5.A.04 - Qualité Algorithmique
* TD Profiling : analyseur de fréquence de mots
*
* Le programme génère un texte pseudo-aléatoire (toujours le même, grâce
* à une graine fixe), puis :
* 1. découpe le texte en lignes et le normalise (minuscules, ponctuation)
* 2. compte les occurrences de chaque mot (hors mots vides)
* 3. trie les mots par fréquence
* 4. calcule des statistiques sur la longueur des mots
* 5. analyse les bigrammes de lettres
* 6. génère un rapport complet dans rapport.txt
*
* 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
*/
#include <stdio.h>
#include <stdlib.h>
#define NB_MOTS_TEXTE 250000
#define NB_MOTS_VOCAB 7000
#define TAILLE_MOT 32
#define MAX_MOTS_UNIQUES 20000
#define GRAINE 20261006UL
/* ------------------------------------------------------------------------ */
/* Générateur pseudo-aléatoire (identique sur toutes les machines) */
/* ------------------------------------------------------------------------ */
static unsigned long etat_alea = GRAINE;
unsigned long alea(void)
{
etat_alea = etat_alea * 6364136223846793005UL + 1442695040888963407UL;
return etat_alea >> 33;
}
/* ------------------------------------------------------------------------ */
/* 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;
while (src[i] != '\0') {
dest[i] = src[i];
i++;
}
dest[i] = '\0';
}
int egales(const char *a, const char *b)
{
int i = 0;
while (a[i] != '\0' && b[i] != '\0') {
if (a[i] != b[i])
return 0;
i++;
}
return a[i] == b[i];
}
int comparer(const char *a, const char *b)
{
int i = 0;
while (a[i] != '\0' && a[i] == b[i])
i++;
return (unsigned char)a[i] - (unsigned char)b[i];
}
void ajouter(char *dest, const char *src)
{
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');
}
/* ------------------------------------------------------------------------ */
/* Génération du texte */
/* ------------------------------------------------------------------------ */
static const char *MOTS_VIDES[] = {
"le", "la", "les", "un", "une", "des", "du", "de", "et", "ou",
"mais", "donc", "or", "ni", "car", "que", "qui", "quoi", "dont", "ou",
"a", "au", "aux", "en", "dans", "par", "pour", "sur", "sous", "avec",
"sans", "chez", "vers", "entre", "il", "elle", "ils", "elles", "on", "nous",
"vous", "je", "tu", "se", "ce", "cet", "cette", "ces", "son", "sa",
"ses", "leur", "leurs", "mon", "ma", "mes", "ne", "pas", "plus", "est"
};
#define NB_MOTS_VIDES ((int)(sizeof(MOTS_VIDES) / sizeof(MOTS_VIDES[0])))
static const char *SYLLABES[] = {
"ba", "be", "bi", "bo", "ca", "co", "da", "de", "di", "fa", "fi", "ga",
"go", "la", "le", "li", "lo", "ma", "me", "mi", "mo", "na", "ne", "no",
"pa", "pe", "pi", "po", "ra", "re", "ri", "ro", "sa", "se", "si", "so",
"ta", "te", "ti", "to", "va", "ve", "vi", "vo", "tion", "ment", "eur", "ique"
};
#define NB_SYLLABES ((int)(sizeof(SYLLABES) / sizeof(SYLLABES[0])))
char **generer_vocabulaire(void)
{
char **vocab = malloc(NB_MOTS_VOCAB * sizeof(char *));
for (int i = 0; i < NB_MOTS_VOCAB; i++) {
vocab[i] = malloc(TAILLE_MOT);
vocab[i][0] = '\0';
int nb_syllabes = 2 + alea() % 3;
for (int j = 0; j < nb_syllabes; j++)
ajouter(vocab[i], SYLLABES[alea() % NB_SYLLABES]);
}
return vocab;
}
char *generer_texte(char **vocab, int nb_mots)
{
char *texte = malloc((size_t)nb_mots * (TAILLE_MOT + 2) + 1);
long pos = 0;
int debut_phrase = 1;
int mots_restants_phrase = 8 + alea() % 8;
for (int i = 0; i < nb_mots; i++) {
const char *mot;
if (alea() % 100 < 40) {
mot = MOTS_VIDES[alea() % NB_MOTS_VIDES];
} else {
/* distribution biaisée : certains mots sont bien plus fréquents */
unsigned long r1 = alea() % NB_MOTS_VOCAB;
unsigned long r2 = alea() % NB_MOTS_VOCAB;
mot = vocab[(r1 * r2) / NB_MOTS_VOCAB];
}
for (int j = 0; mot[j] != '\0'; j++) {
char c = mot[j];
if (debut_phrase && j == 0)
c = c - 'a' + 'A';
texte[pos++] = c;
}
debut_phrase = 0;
mots_restants_phrase--;
if (mots_restants_phrase == 0) {
texte[pos++] = '.';
texte[pos++] = '\n';
debut_phrase = 1;
mots_restants_phrase = 8 + alea() % 8;
} else if (alea() % 10 == 0) {
texte[pos++] = ',';
texte[pos++] = ' ';
} else {
texte[pos++] = ' ';
}
}
texte[pos++] = '\n';
texte[pos] = '\0';
return texte;
}
/* ------------------------------------------------------------------------ */
/* Découpage et normalisation */
/* ------------------------------------------------------------------------ */
char **decouper_lignes(const char *texte, int *nb_lignes)
{
int capacite = 1024;
char **lignes = malloc(capacite * sizeof(char *));
int n = 0;
int debut = 0;
for (int i = 0; texte[i] != '\0'; i++) {
if (texte[i] == '\n') {
int taille = i - debut;
if (n == capacite) {
capacite *= 2;
lignes = realloc(lignes, capacite * sizeof(char *));
}
lignes[n] = malloc(taille + 1);
for (int j = 0; j < taille; j++)
lignes[n][j] = texte[debut + j];
lignes[n][taille] = '\0';
n++;
debut = i + 1;
}
}
*nb_lignes = n;
return 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] = ' ';
}
}
/* ------------------------------------------------------------------------ */
/* Comptage des mots */
/* ------------------------------------------------------------------------ */
typedef struct {
char mot[TAILLE_MOT];
int occurrences;
} Entree;
int est_mot_vide(const char *mot)
{
for (int i = 0; i < NB_MOTS_VIDES; i++) {
if (egales(mot, MOTS_VIDES[i]))
return 1;
}
return 0;
}
int chercher_mot(Entree *table, int nb_entrees, const char *mot)
{
for (int i = 0; i < nb_entrees; i++) {
if (egales(table[i].mot, mot))
return i;
}
return -1;
}
void compter_mot(Entree *table, int *nb_entrees, const char *mot)
{
int indice = chercher_mot(table, *nb_entrees, mot);
if (indice >= 0) {
table[indice].occurrences++;
} else {
copier(table[*nb_entrees].mot, mot);
table[*nb_entrees].occurrences = 1;
(*nb_entrees)++;
}
}
void compter_mots_ligne(Entree *table, int *nb_entrees, const char *ligne,
long *nb_mots_total)
{
char mot[TAILLE_MOT];
int i = 0;
while (ligne[i] != '\0') {
while (ligne[i] == ' ')
i++;
int k = 0;
while (ligne[i] != '\0' && ligne[i] != ' ') {
if (k < TAILLE_MOT - 1)
mot[k++] = ligne[i];
i++;
}
mot[k] = '\0';
if (k > 0) {
(*nb_mots_total)++;
if (!est_mot_vide(mot))
compter_mot(table, nb_entrees, mot);
}
}
}
/* ------------------------------------------------------------------------ */
/* Tri : par nombre d'occurrences décroissant, puis ordre alphabétique */
/* ------------------------------------------------------------------------ */
int doit_echanger(const Entree *a, const Entree *b)
{
if (a->occurrences != b->occurrences)
return a->occurrences < b->occurrences;
return comparer(a->mot, b->mot) > 0;
}
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;
}
}
}
}
/* ------------------------------------------------------------------------ */
/* Statistiques */
/* ------------------------------------------------------------------------ */
double longueur_moyenne(const Entree *table, int n)
{
long total = 0;
for (int i = 0; i < n; i++)
total += longueur(table[i].mot);
return (double)total / n;
}
double ecart_type_longueur(const Entree *table, int n)
{
double somme = 0.0;
for (int i = 0; i < n; i++) {
double ecart = longueur(table[i].mot) - longueur_moyenne(table, n);
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. */
void analyser_bigrammes(char **lignes, int nb_lignes,
char *meilleur, int *occ_meilleur)
{
static int trigrammes[26][26][26];
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']++;
}
}
*occ_meilleur = -1;
for (int a = 0; a < 26; a++) {
for (int b = 0; b < 26; b++) {
int total = 0;
for (int c = 0; c < 26; c++)
total += trigrammes[a][b][c];
if (total > *occ_meilleur) {
*occ_meilleur = total;
int meilleur_c = 0;
for (int c = 1; c < 26; c++)
if (trigrammes[a][b][c] > trigrammes[a][b][meilleur_c])
meilleur_c = c;
meilleur[0] = 'a' + a;
meilleur[1] = 'a' + b;
meilleur[2] = 'a' + meilleur_c;
meilleur[3] = '\0';
}
}
}
}
/* ------------------------------------------------------------------------ */
/* Rapport */
/* ------------------------------------------------------------------------ */
char *construire_rapport(const Entree *table, int n)
{
char *rapport = malloc((size_t)n * 64 + 256);
char ligne[128];
rapport[0] = '\0';
ajouter(rapport, "rang;mot;occurrences\n");
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);
}
return rapport;
}
unsigned long empreinte(const char *s)
{
unsigned long h = 1469598103934665603UL;
for (int i = 0; s[i] != '\0'; i++) {
h ^= (unsigned char)s[i];
h *= 1099511628211UL;
}
return h;
}
/* ------------------------------------------------------------------------ */
double racine(double x)
{
double r = x > 1.0 ? x : 1.0;
for (int i = 0; i < 50; i++)
r = 0.5 * (r + x / r);
return r;
}
int main(void)
{
char **vocab = generer_vocabulaire();
char *texte = generer_texte(vocab, NB_MOTS_TEXTE);
int nb_lignes;
char **lignes = decouper_lignes(texte, &nb_lignes);
for (int i = 0; i < nb_lignes; i++)
normaliser_ligne(lignes[i]);
Entree *table = malloc(MAX_MOTS_UNIQUES * sizeof(Entree));
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);
trier_entrees(table, nb_entrees);
double moyenne = longueur_moyenne(table, nb_entrees);
double ecart_type = racine(ecart_type_longueur(table, nb_entrees));
char trigramme[4];
int occ_trigramme;
analyser_bigrammes(lignes, nb_lignes, trigramme, &occ_trigramme);
char *rapport = construire_rapport(table, nb_entrees);
FILE *f = fopen("rapport.txt", "w");
if (f != NULL) {
fputs(rapport, f);
fclose(f);
}
printf("Lignes analysées : %d\n", nb_lignes);
printf("Mots au total : %ld\n", nb_mots_total);
printf("Mots distincts : %d\n", nb_entrees);
printf("Longueur moyenne : %.3f (écart-type %.3f)\n", moyenne, ecart_type);
printf("Bigramme le + courant : \"%c%c\" (%d fois, souvent suivi de '%c')\n",
trigramme[0], trigramme[1], occ_trigramme, trigramme[2]);
printf("\nTop 10 :\n");
for (int i = 0; i < 10 && i < nb_entrees; i++)
printf(" %2d. %-16s %d\n", i + 1, table[i].mot, table[i].occurrences);
printf("\nEmpreinte du rapport : %016lx\n", empreinte(rapport));
free(rapport);
free(table);
for (int i = 0; i < nb_lignes; i++)
free(lignes[i]);
free(lignes);
free(texte);
for (int i = 0; i < NB_MOTS_VOCAB; i++)
free(vocab[i]);
free(vocab);
return 0;
}
File diff suppressed because it is too large Load Diff
+19
View File
@@ -0,0 +1,19 @@
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
+19
View File
@@ -0,0 +1,19 @@
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
+19
View File
@@ -0,0 +1,19 @@
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
+19
View File
@@ -0,0 +1,19 @@
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
+19
View File
@@ -0,0 +1,19 @@
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
+19
View File
@@ -0,0 +1,19 @@
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
+19
View File
@@ -0,0 +1,19 @@
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
+19
View File
@@ -0,0 +1,19 @@
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
+19
View File
@@ -0,0 +1,19 @@
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
+1
View File
@@ -0,0 +1 @@
reel=0.34 utilisateur=0.29 systeme=0.00 memoire_Kio=7028
+1
View File
@@ -0,0 +1 @@
reel=3.14 utilisateur=3.09 systeme=0.00 memoire_Kio=6668
+1
View File
@@ -0,0 +1 @@
reel=3.01 utilisateur=2.99 systeme=0.00 memoire_Kio=6692
+1
View File
@@ -0,0 +1 @@
reel=2.91 utilisateur=2.89 systeme=0.00 memoire_Kio=6548
+1
View File
@@ -0,0 +1 @@
reel=6.64 utilisateur=6.58 systeme=0.00 memoire_Kio=6580
+1
View File
@@ -0,0 +1 @@
reel=1.50 utilisateur=1.47 systeme=0.00 memoire_Kio=6940
+1
View File
@@ -0,0 +1 @@
reel=1.48 utilisateur=1.45 systeme=0.00 memoire_Kio=6940
+1
View File
@@ -0,0 +1 @@
reel=1.47 utilisateur=1.43 systeme=0.00 memoire_Kio=6932
+1
View File
@@ -0,0 +1 @@
reel=0.88 utilisateur=0.85 systeme=0.00 memoire_Kio=6948
+1
View File
@@ -0,0 +1 @@
reel=0.90 utilisateur=0.87 systeme=0.00 memoire_Kio=6948
+1
View File
@@ -0,0 +1 @@
reel=0.86 utilisateur=0.84 systeme=0.00 memoire_Kio=6948
+1
View File
@@ -0,0 +1 @@
reel=0.67 utilisateur=0.63 systeme=0.00 memoire_Kio=6988
+1
View File
@@ -0,0 +1 @@
reel=0.62 utilisateur=0.60 systeme=0.00 memoire_Kio=6872
+1
View File
@@ -0,0 +1 @@
reel=0.61 utilisateur=0.59 systeme=0.00 memoire_Kio=7004
+1
View File
@@ -0,0 +1 @@
reel=0.47 utilisateur=0.45 systeme=0.00 memoire_Kio=7008
+1
View File
@@ -0,0 +1 @@
reel=0.46 utilisateur=0.44 systeme=0.00 memoire_Kio=7008
+1
View File
@@ -0,0 +1 @@
reel=0.47 utilisateur=0.44 systeme=0.00 memoire_Kio=6992
+1
View File
@@ -0,0 +1 @@
reel=0.18 utilisateur=0.15 systeme=0.00 memoire_Kio=7004
+1
View File
@@ -0,0 +1 @@
reel=0.14 utilisateur=0.12 systeme=0.00 memoire_Kio=6940
+1
View File
@@ -0,0 +1 @@
reel=0.20 utilisateur=0.12 systeme=0.00 memoire_Kio=6980
File diff suppressed because it is too large Load Diff
+19
View File
@@ -0,0 +1,19 @@
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
+19
View File
@@ -0,0 +1,19 @@
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
+19
View File
@@ -0,0 +1,19 @@
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
+19
View File
@@ -0,0 +1,19 @@
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
+1
View File
@@ -0,0 +1 @@
reel=0.11 utilisateur=0.11 systeme=0.00 memoire_Kio=6972
+1
View File
@@ -0,0 +1 @@
reel=0.11 utilisateur=0.11 systeme=0.00 memoire_Kio=6984
+1
View File
@@ -0,0 +1 @@
reel=0.11 utilisateur=0.10 systeme=0.00 memoire_Kio=6988
+1
View File
@@ -0,0 +1 @@
reel=0.26 utilisateur=0.26 systeme=0.00 memoire_Kio=6996
File diff suppressed because it is too large Load Diff
+19
View File
@@ -0,0 +1,19 @@
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
+19
View File
@@ -0,0 +1,19 @@
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
+19
View File
@@ -0,0 +1,19 @@
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
+19
View File
@@ -0,0 +1,19 @@
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
+1
View File
@@ -0,0 +1 @@
reel=2.90 utilisateur=2.89 systeme=0.00 memoire_Kio=6652
+1
View File
@@ -0,0 +1 @@
reel=2.88 utilisateur=2.87 systeme=0.00 memoire_Kio=6540
+1
View File
@@ -0,0 +1 @@
reel=2.84 utilisateur=2.81 systeme=0.01 memoire_Kio=6684
+1
View File
@@ -0,0 +1 @@
reel=6.26 utilisateur=6.26 systeme=0.00 memoire_Kio=6696
+177
View File
@@ -0,0 +1,177 @@
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.04 0.04 12195414 0.00 0.00 egales
14.29 0.04 0.01 5297256 0.00 0.00 est_lettre
14.29 0.06 0.01 250000 0.00 0.00 est_mot_vide
14.29 0.07 0.01 _init
7.14 0.07 0.01 33591 0.00 0.00 comparer
0.00 0.07 0.00 1266663 0.00 0.00 en_minuscule
0.00 0.07 0.00 928117 0.00 0.00 alea
0.00 0.07 0.00 150182 0.00 0.00 chercher_mot
0.00 0.07 0.00 150182 0.00 0.00 compter_mot
0.00 0.07 0.00 150182 0.00 0.00 hacher_mot
0.00 0.07 0.00 66114 0.00 0.00 doit_echanger
0.00 0.07 0.00 38532 0.00 0.00 longueur
0.00 0.07 0.00 26800 0.00 0.00 copier
0.00 0.07 0.00 21746 0.00 0.00 compter_mots_ligne
0.00 0.07 0.00 21746 0.00 0.00 normaliser_ligne
0.00 0.07 0.00 20934 0.00 0.00 ajouter
0.00 0.07 0.00 2 0.00 0.00 longueur_moyenne
0.00 0.07 0.00 1 0.00 7.09 analyser_bigrammes
0.00 0.07 0.00 1 0.00 0.00 construire_rapport
0.00 0.07 0.00 1 0.00 0.00 decouper_lignes
0.00 0.07 0.00 1 0.00 0.00 ecart_type_longueur
0.00 0.07 0.00 1 0.00 0.00 empreinte
0.00 0.07 0.00 1 0.00 5.00 fusionner_entrees
0.00 0.07 0.00 1 0.00 0.00 generer_texte
0.00 0.07 0.00 1 0.00 0.00 generer_vocabulaire
0.00 0.07 0.00 1 0.00 0.00 racine
0.00 0.07 0.00 1 0.00 5.00 trier_entrees
Call graph
granularity: each sample hit covers 4 byte(s) for 14.29% of 0.07 seconds
index % time self children called name
<spontaneous>
[1] 85.7 0.00 0.06 main [1]
0.00 0.04 21746/21746 compter_mots_ligne [2]
0.00 0.01 1/1 analyser_bigrammes [7]
0.00 0.01 1/1 trier_entrees [11]
0.00 0.00 21746/21746 normaliser_ligne [12]
0.00 0.00 1/1 generer_vocabulaire [27]
0.00 0.00 1/1 generer_texte [26]
0.00 0.00 1/1 decouper_lignes [23]
0.00 0.00 1/2 longueur_moyenne [21]
0.00 0.00 1/1 ecart_type_longueur [24]
0.00 0.00 1/1 racine [28]
0.00 0.00 1/1 construire_rapport [22]
0.00 0.00 1/1 empreinte [25]
-----------------------------------------------
0.00 0.04 21746/21746 main [1]
[2] 64.3 0.00 0.04 21746 compter_mots_ligne [2]
0.01 0.03 250000/250000 est_mot_vide [3]
0.00 0.00 150182/150182 compter_mot [14]
-----------------------------------------------
0.01 0.03 250000/250000 compter_mots_ligne [2]
[3] 63.7 0.01 0.03 250000 est_mot_vide [3]
0.03 0.00 12045671/12195414 egales [4]
-----------------------------------------------
0.00 0.00 149743/12195414 chercher_mot [13]
0.03 0.00 12045671/12195414 est_mot_vide [3]
[4] 50.0 0.04 0.00 12195414 egales [4]
-----------------------------------------------
0.00 0.00 1539584/5297256 normaliser_ligne [12]
0.01 0.00 3757672/5297256 analyser_bigrammes [7]
[5] 14.3 0.01 0.00 5297256 est_lettre [5]
-----------------------------------------------
<spontaneous>
[6] 14.3 0.01 0.00 _init [6]
-----------------------------------------------
0.00 0.01 1/1 main [1]
[7] 10.1 0.00 0.01 1 analyser_bigrammes [7]
0.01 0.00 3757672/5297256 est_lettre [5]
-----------------------------------------------
0.00 0.01 66114/66114 fusionner_entrees [10]
[8] 7.1 0.00 0.01 66114 doit_echanger [8]
0.01 0.00 33591/33591 comparer [9]
-----------------------------------------------
0.01 0.00 33591/33591 doit_echanger [8]
[9] 7.1 0.01 0.00 33591 comparer [9]
-----------------------------------------------
11730 fusionner_entrees [10]
0.00 0.01 1/1 trier_entrees [11]
[10] 7.1 0.00 0.01 1+11730 fusionner_entrees [10]
0.00 0.01 66114/66114 doit_echanger [8]
11730 fusionner_entrees [10]
-----------------------------------------------
0.00 0.01 1/1 main [1]
[11] 7.1 0.00 0.01 1 trier_entrees [11]
0.00 0.01 1/1 fusionner_entrees [10]
-----------------------------------------------
0.00 0.00 21746/21746 main [1]
[12] 4.2 0.00 0.00 21746 normaliser_ligne [12]
0.00 0.00 1539584/5297256 est_lettre [5]
0.00 0.00 1266663/1266663 en_minuscule [15]
-----------------------------------------------
0.00 0.00 150182/150182 compter_mot [14]
[13] 0.6 0.00 0.00 150182 chercher_mot [13]
0.00 0.00 149743/12195414 egales [4]
0.00 0.00 150182/150182 hacher_mot [17]
-----------------------------------------------
0.00 0.00 150182/150182 compter_mots_ligne [2]
[14] 0.6 0.00 0.00 150182 compter_mot [14]
0.00 0.00 150182/150182 chercher_mot [13]
0.00 0.00 5866/26800 copier [19]
-----------------------------------------------
0.00 0.00 1266663/1266663 normaliser_ligne [12]
[15] 0.0 0.00 0.00 1266663 en_minuscule [15]
-----------------------------------------------
0.00 0.00 27934/928117 generer_vocabulaire [27]
0.00 0.00 900183/928117 generer_texte [26]
[16] 0.0 0.00 0.00 928117 alea [16]
-----------------------------------------------
0.00 0.00 150182/150182 chercher_mot [13]
[17] 0.0 0.00 0.00 150182 hacher_mot [17]
-----------------------------------------------
0.00 0.00 5866/38532 ecart_type_longueur [24]
0.00 0.00 11732/38532 longueur_moyenne [21]
0.00 0.00 20934/38532 ajouter [20]
[18] 0.0 0.00 0.00 38532 longueur [18]
-----------------------------------------------
0.00 0.00 5866/26800 compter_mot [14]
0.00 0.00 20934/26800 ajouter [20]
[19] 0.0 0.00 0.00 26800 copier [19]
-----------------------------------------------
0.00 0.00 20934/20934 generer_vocabulaire [27]
[20] 0.0 0.00 0.00 20934 ajouter [20]
0.00 0.00 20934/38532 longueur [18]
0.00 0.00 20934/26800 copier [19]
-----------------------------------------------
0.00 0.00 1/2 ecart_type_longueur [24]
0.00 0.00 1/2 main [1]
[21] 0.0 0.00 0.00 2 longueur_moyenne [21]
0.00 0.00 11732/38532 longueur [18]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[22] 0.0 0.00 0.00 1 construire_rapport [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 ecart_type_longueur [24]
0.00 0.00 5866/38532 longueur [18]
0.00 0.00 1/2 longueur_moyenne [21]
-----------------------------------------------
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 [16]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[27] 0.0 0.00 0.00 1 generer_vocabulaire [27]
0.00 0.00 27934/928117 alea [16]
0.00 0.00 20934/20934 ajouter [20]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[28] 0.0 0.00 0.00 1 racine [28]
-----------------------------------------------
Index by function name
[6] _init [19] copier [10] fusionner_entrees
[20] ajouter [23] decouper_lignes [26] generer_texte
[16] alea [8] doit_echanger [27] generer_vocabulaire
[7] analyser_bigrammes [24] ecart_type_longueur [17] hacher_mot
[13] chercher_mot [4] egales [18] longueur
[9] comparer [25] empreinte [21] longueur_moyenne
[14] compter_mot [15] en_minuscule [12] normaliser_ligne
[2] compter_mots_ligne [5] est_lettre [28] racine
[22] construire_rapport [3] est_mot_vide [11] trier_entrees

Some files were not shown because too many files have changed in this diff Show More