forked from menault/2026_TD1_DEV51_Qualite_Algo
Documenter le TD et conserver les profils et mesures reproductibles
This commit is contained in:
@@ -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
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -0,0 +1 @@
|
||||
reel=0.34 utilisateur=0.29 systeme=0.00 memoire_Kio=7028
|
||||
@@ -0,0 +1 @@
|
||||
reel=3.14 utilisateur=3.09 systeme=0.00 memoire_Kio=6668
|
||||
@@ -0,0 +1 @@
|
||||
reel=3.01 utilisateur=2.99 systeme=0.00 memoire_Kio=6692
|
||||
@@ -0,0 +1 @@
|
||||
reel=2.91 utilisateur=2.89 systeme=0.00 memoire_Kio=6548
|
||||
@@ -0,0 +1 @@
|
||||
reel=6.64 utilisateur=6.58 systeme=0.00 memoire_Kio=6580
|
||||
@@ -0,0 +1 @@
|
||||
reel=1.50 utilisateur=1.47 systeme=0.00 memoire_Kio=6940
|
||||
@@ -0,0 +1 @@
|
||||
reel=1.48 utilisateur=1.45 systeme=0.00 memoire_Kio=6940
|
||||
@@ -0,0 +1 @@
|
||||
reel=1.47 utilisateur=1.43 systeme=0.00 memoire_Kio=6932
|
||||
@@ -0,0 +1 @@
|
||||
reel=0.88 utilisateur=0.85 systeme=0.00 memoire_Kio=6948
|
||||
@@ -0,0 +1 @@
|
||||
reel=0.90 utilisateur=0.87 systeme=0.00 memoire_Kio=6948
|
||||
@@ -0,0 +1 @@
|
||||
reel=0.86 utilisateur=0.84 systeme=0.00 memoire_Kio=6948
|
||||
@@ -0,0 +1 @@
|
||||
reel=0.67 utilisateur=0.63 systeme=0.00 memoire_Kio=6988
|
||||
@@ -0,0 +1 @@
|
||||
reel=0.62 utilisateur=0.60 systeme=0.00 memoire_Kio=6872
|
||||
@@ -0,0 +1 @@
|
||||
reel=0.61 utilisateur=0.59 systeme=0.00 memoire_Kio=7004
|
||||
@@ -0,0 +1 @@
|
||||
reel=0.47 utilisateur=0.45 systeme=0.00 memoire_Kio=7008
|
||||
@@ -0,0 +1 @@
|
||||
reel=0.46 utilisateur=0.44 systeme=0.00 memoire_Kio=7008
|
||||
@@ -0,0 +1 @@
|
||||
reel=0.47 utilisateur=0.44 systeme=0.00 memoire_Kio=6992
|
||||
@@ -0,0 +1 @@
|
||||
reel=0.18 utilisateur=0.15 systeme=0.00 memoire_Kio=7004
|
||||
@@ -0,0 +1 @@
|
||||
reel=0.14 utilisateur=0.12 systeme=0.00 memoire_Kio=6940
|
||||
@@ -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
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -0,0 +1 @@
|
||||
reel=0.11 utilisateur=0.11 systeme=0.00 memoire_Kio=6972
|
||||
@@ -0,0 +1 @@
|
||||
reel=0.11 utilisateur=0.11 systeme=0.00 memoire_Kio=6984
|
||||
@@ -0,0 +1 @@
|
||||
reel=0.11 utilisateur=0.10 systeme=0.00 memoire_Kio=6988
|
||||
@@ -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
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -0,0 +1 @@
|
||||
reel=2.90 utilisateur=2.89 systeme=0.00 memoire_Kio=6652
|
||||
@@ -0,0 +1 @@
|
||||
reel=2.88 utilisateur=2.87 systeme=0.00 memoire_Kio=6540
|
||||
@@ -0,0 +1 @@
|
||||
reel=2.84 utilisateur=2.81 systeme=0.01 memoire_Kio=6684
|
||||
@@ -0,0 +1 @@
|
||||
reel=6.26 utilisateur=6.26 systeme=0.00 memoire_Kio=6696
|
||||
@@ -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
Reference in New Issue
Block a user