This commit is contained in:
2026-10-07 12:05:12 +02:00
parent 5f9c5eec33
commit 7ab243f1d6
3 changed files with 197 additions and 175 deletions
+24 -4
View File
@@ -228,10 +228,30 @@ typedef struct {
int longueur_mot;
} Entree;
int est_mot_vide(const char *mot)
/* Groupes par longueur et première lettre ; indices + 1, zéro = fin. */
int est_mot_vide(const char *mot, int taille)
{
for (int i = 0; i < NB_MOTS_VIDES; i++) {
if (egales(mot, MOTS_VIDES[i]))
static int groupes[TAILLE_MOT][26];
static int suivants[NB_MOTS_VIDES];
static int initialise = 0;
if (!initialise) {
for (int i = 0; i < NB_MOTS_VIDES; i++) {
int n = longueur(MOTS_VIDES[i]);
int lettre = MOTS_VIDES[i][0] - 'a';
if (n > 0 && n < TAILLE_MOT && lettre >= 0 && lettre < 26) {
suivants[i] = groupes[n][lettre];
groupes[n][lettre] = i + 1;
}
}
initialise = 1;
}
if (taille <= 0 || taille >= TAILLE_MOT || mot[0] < 'a' || mot[0] > 'z')
return 0;
for (int indice = groupes[taille][mot[0] - 'a']; indice != 0;
indice = suivants[indice - 1]) {
if (egales(mot, MOTS_VIDES[indice - 1]))
return 1;
}
return 0;
@@ -303,7 +323,7 @@ void compter_mots_ligne(Entree *table, int *nb_entrees, const char *ligne,
mot[k] = '\0';
if (k > 0) {
(*nb_mots_total)++;
if (!est_mot_vide(mot))
if (!est_mot_vide(mot, k))
compter_mot(table, nb_entrees, mot, k);
}
}
-171
View File
@@ -1,171 +0,0 @@
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls ms/call ms/call name
28.85 0.23 0.23 121889737 0.00 0.00 egales
15.38 0.34 0.12 2500000 0.00 0.00 est_mot_vide
10.26 0.42 0.08 52929320 0.00 0.00 est_lettre
8.97 0.49 0.07 217318 0.00 0.00 compter_mots_ligne
7.69 0.56 0.06 1 60.00 69.97 generer_texte
5.13 0.59 0.04 1499989 0.00 0.00 hacher_mot
5.13 0.64 0.04 1 40.00 96.75 analyser_bigrammes
5.13 0.68 0.04 1 40.00 40.00 decouper_lignes
2.56 0.69 0.02 1499989 0.00 0.00 compter_mot
2.56 0.71 0.02 217318 0.00 0.00 normaliser_ligne
2.56 0.73 0.02 _init
1.92 0.75 0.01 15787 0.00 0.00 comparer
1.28 0.76 0.01 12656214 0.00 0.00 en_minuscule
1.28 0.77 0.01 9027924 0.00 0.00 alea
1.28 0.78 0.01 1499989 0.00 0.00 chercher_mot
0.00 0.78 0.00 68597 0.00 0.00 doit_echanger
0.00 0.78 0.00 27010 0.00 0.00 copier
0.00 0.78 0.00 20934 0.00 0.00 ajouter
0.00 0.78 0.00 20934 0.00 0.00 longueur
0.00 0.78 0.00 1 0.00 0.00 construire_rapport
0.00 0.78 0.00 1 0.00 0.00 ecart_type_longueur
0.00 0.78 0.00 1 0.00 0.00 empreinte
0.00 0.78 0.00 1 0.00 15.00 fusionner_entrees
0.00 0.78 0.00 1 0.00 0.03 generer_vocabulaire
0.00 0.78 0.00 1 0.00 0.00 longueur_moyenne
0.00 0.78 0.00 1 0.00 0.00 racine
0.00 0.78 0.00 1 0.00 15.00 trier_entrees
Call graph
granularity: each sample hit covers 4 byte(s) for 1.28% of 0.78 seconds
index % time self children called name
<spontaneous>
[1] 97.4 0.00 0.76 main [1]
0.07 0.41 217318/217318 compter_mots_ligne [2]
0.04 0.06 1/1 analyser_bigrammes [5]
0.06 0.01 1/1 generer_texte [8]
0.02 0.03 217318/217318 normaliser_ligne [9]
0.04 0.00 1/1 decouper_lignes [12]
0.00 0.01 1/1 trier_entrees [17]
0.00 0.00 1/1 generer_vocabulaire [20]
0.00 0.00 1/1 longueur_moyenne [27]
0.00 0.00 1/1 ecart_type_longueur [25]
0.00 0.00 1/1 racine [28]
0.00 0.00 1/1 construire_rapport [24]
0.00 0.00 1/1 empreinte [26]
-----------------------------------------------
0.07 0.41 217318/217318 main [1]
[2] 62.2 0.07 0.41 217318 compter_mots_ligne [2]
0.12 0.22 2500000/2500000 est_mot_vide [3]
0.02 0.05 1499989/1499989 compter_mot [7]
-----------------------------------------------
0.12 0.22 2500000/2500000 compter_mots_ligne [2]
[3] 43.9 0.12 0.22 2500000 est_mot_vide [3]
0.22 0.00 120340526/121889737 egales [4]
-----------------------------------------------
0.00 0.00 1549211/121889737 chercher_mot [10]
0.22 0.00 120340526/121889737 est_mot_vide [3]
[4] 28.8 0.23 0.00 121889737 egales [4]
-----------------------------------------------
0.04 0.06 1/1 main [1]
[5] 12.4 0.04 0.06 1 analyser_bigrammes [5]
0.06 0.00 37544897/52929320 est_lettre [6]
-----------------------------------------------
0.02 0.00 15384423/52929320 normaliser_ligne [9]
0.06 0.00 37544897/52929320 analyser_bigrammes [5]
[6] 10.3 0.08 0.00 52929320 est_lettre [6]
-----------------------------------------------
0.02 0.05 1499989/1499989 compter_mots_ligne [2]
[7] 9.3 0.02 0.05 1499989 compter_mot [7]
0.01 0.04 1499989/1499989 chercher_mot [10]
0.00 0.00 6076/27010 copier [21]
-----------------------------------------------
0.06 0.01 1/1 main [1]
[8] 9.0 0.06 0.01 1 generer_texte [8]
0.01 0.00 8999990/9027924 alea [19]
-----------------------------------------------
0.02 0.03 217318/217318 main [1]
[9] 6.8 0.02 0.03 217318 normaliser_ligne [9]
0.02 0.00 15384423/52929320 est_lettre [6]
0.01 0.00 12656214/12656214 en_minuscule [18]
-----------------------------------------------
0.01 0.04 1499989/1499989 compter_mot [7]
[10] 6.8 0.01 0.04 1499989 chercher_mot [10]
0.04 0.00 1499989/1499989 hacher_mot [11]
0.00 0.00 1549211/121889737 egales [4]
-----------------------------------------------
0.04 0.00 1499989/1499989 chercher_mot [10]
[11] 5.1 0.04 0.00 1499989 hacher_mot [11]
-----------------------------------------------
0.04 0.00 1/1 main [1]
[12] 5.1 0.04 0.00 1 decouper_lignes [12]
-----------------------------------------------
<spontaneous>
[13] 2.6 0.02 0.00 _init [13]
-----------------------------------------------
0.00 0.01 68597/68597 fusionner_entrees [16]
[14] 1.9 0.00 0.01 68597 doit_echanger [14]
0.01 0.00 15787/15787 comparer [15]
-----------------------------------------------
0.01 0.00 15787/15787 doit_echanger [14]
[15] 1.9 0.01 0.00 15787 comparer [15]
-----------------------------------------------
12150 fusionner_entrees [16]
0.00 0.01 1/1 trier_entrees [17]
[16] 1.9 0.00 0.01 1+12150 fusionner_entrees [16]
0.00 0.01 68597/68597 doit_echanger [14]
12150 fusionner_entrees [16]
-----------------------------------------------
0.00 0.01 1/1 main [1]
[17] 1.9 0.00 0.01 1 trier_entrees [17]
0.00 0.01 1/1 fusionner_entrees [16]
-----------------------------------------------
0.01 0.00 12656214/12656214 normaliser_ligne [9]
[18] 1.3 0.01 0.00 12656214 en_minuscule [18]
-----------------------------------------------
0.00 0.00 27934/9027924 generer_vocabulaire [20]
0.01 0.00 8999990/9027924 generer_texte [8]
[19] 1.3 0.01 0.00 9027924 alea [19]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[20] 0.0 0.00 0.00 1 generer_vocabulaire [20]
0.00 0.00 27934/9027924 alea [19]
0.00 0.00 20934/20934 ajouter [22]
-----------------------------------------------
0.00 0.00 6076/27010 compter_mot [7]
0.00 0.00 20934/27010 ajouter [22]
[21] 0.0 0.00 0.00 27010 copier [21]
-----------------------------------------------
0.00 0.00 20934/20934 generer_vocabulaire [20]
[22] 0.0 0.00 0.00 20934 ajouter [22]
0.00 0.00 20934/20934 longueur [23]
0.00 0.00 20934/27010 copier [21]
-----------------------------------------------
0.00 0.00 20934/20934 ajouter [22]
[23] 0.0 0.00 0.00 20934 longueur [23]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[24] 0.0 0.00 0.00 1 construire_rapport [24]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[25] 0.0 0.00 0.00 1 ecart_type_longueur [25]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[26] 0.0 0.00 0.00 1 empreinte [26]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[27] 0.0 0.00 0.00 1 longueur_moyenne [27]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[28] 0.0 0.00 0.00 1 racine [28]
-----------------------------------------------
Index by function name
[13] _init [21] copier [16] fusionner_entrees
[22] ajouter [12] decouper_lignes [8] generer_texte
[19] alea [14] doit_echanger [20] generer_vocabulaire
[5] analyser_bigrammes [25] ecart_type_longueur [11] hacher_mot
[10] chercher_mot [4] egales [23] longueur
[15] comparer [26] empreinte [27] longueur_moyenne
[7] compter_mot [18] en_minuscule [9] normaliser_ligne
[2] compter_mots_ligne [6] est_lettre [28] racine
[24] construire_rapport [3] est_mot_vide [17] trier_entrees
+173
View File
@@ -0,0 +1,173 @@
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls ms/call ms/call name
17.78 0.08 0.08 1 80.00 108.37 analyser_bigrammes
13.33 0.14 0.06 217318 0.00 0.00 compter_mots_ligne
13.33 0.20 0.06 1 60.00 60.00 decouper_lignes
8.89 0.24 0.04 52929320 0.00 0.00 est_lettre
8.89 0.28 0.04 1 40.00 49.97 generer_texte
8.89 0.32 0.04 _init
6.67 0.35 0.03 217318 0.00 0.00 normaliser_ligne
4.44 0.37 0.02 12656214 0.00 0.00 en_minuscule
4.44 0.39 0.02 3413876 0.00 0.00 egales
4.44 0.41 0.02 2500000 0.00 0.00 est_mot_vide
2.22 0.42 0.01 9027924 0.00 0.00 alea
2.22 0.43 0.01 1499989 0.00 0.00 compter_mot
2.22 0.44 0.01 1499989 0.00 0.00 hacher_mot
2.22 0.45 0.01 1 10.00 10.00 fusionner_entrees
0.00 0.45 0.00 1499989 0.00 0.00 chercher_mot
0.00 0.45 0.00 68597 0.00 0.00 doit_echanger
0.00 0.45 0.00 27010 0.00 0.00 copier
0.00 0.45 0.00 20994 0.00 0.00 longueur
0.00 0.45 0.00 20934 0.00 0.00 ajouter
0.00 0.45 0.00 15787 0.00 0.00 comparer
0.00 0.45 0.00 1 0.00 0.00 construire_rapport
0.00 0.45 0.00 1 0.00 0.00 ecart_type_longueur
0.00 0.45 0.00 1 0.00 0.00 empreinte
0.00 0.45 0.00 1 0.00 0.03 generer_vocabulaire
0.00 0.45 0.00 1 0.00 0.00 longueur_moyenne
0.00 0.45 0.00 1 0.00 0.00 racine
0.00 0.45 0.00 1 0.00 10.00 trier_entrees
Call graph
granularity: each sample hit covers 4 byte(s) for 2.22% of 0.45 seconds
index % time self children called name
<spontaneous>
[1] 91.1 0.00 0.41 main [1]
0.06 0.06 217318/217318 compter_mots_ligne [2]
0.08 0.03 1/1 analyser_bigrammes [3]
0.03 0.03 217318/217318 normaliser_ligne [4]
0.06 0.00 1/1 decouper_lignes [5]
0.04 0.01 1/1 generer_texte [6]
0.00 0.01 1/1 trier_entrees [17]
0.00 0.00 1/1 generer_vocabulaire [18]
0.00 0.00 1/1 longueur_moyenne [27]
0.00 0.00 1/1 ecart_type_longueur [25]
0.00 0.00 1/1 racine [28]
0.00 0.00 1/1 construire_rapport [24]
0.00 0.00 1/1 empreinte [26]
-----------------------------------------------
0.06 0.06 217318/217318 main [1]
[2] 26.7 0.06 0.06 217318 compter_mots_ligne [2]
0.02 0.01 2500000/2500000 est_mot_vide [9]
0.01 0.02 1499989/1499989 compter_mot [10]
-----------------------------------------------
0.08 0.03 1/1 main [1]
[3] 24.1 0.08 0.03 1 analyser_bigrammes [3]
0.03 0.00 37544897/52929320 est_lettre [7]
-----------------------------------------------
0.03 0.03 217318/217318 main [1]
[4] 13.7 0.03 0.03 217318 normaliser_ligne [4]
0.02 0.00 12656214/12656214 en_minuscule [11]
0.01 0.00 15384423/52929320 est_lettre [7]
-----------------------------------------------
0.06 0.00 1/1 main [1]
[5] 13.3 0.06 0.00 1 decouper_lignes [5]
-----------------------------------------------
0.04 0.01 1/1 main [1]
[6] 11.1 0.04 0.01 1 generer_texte [6]
0.01 0.00 8999990/9027924 alea [14]
-----------------------------------------------
0.01 0.00 15384423/52929320 normaliser_ligne [4]
0.03 0.00 37544897/52929320 analyser_bigrammes [3]
[7] 8.9 0.04 0.00 52929320 est_lettre [7]
-----------------------------------------------
<spontaneous>
[8] 8.9 0.04 0.00 _init [8]
-----------------------------------------------
0.02 0.01 2500000/2500000 compter_mots_ligne [2]
[9] 6.9 0.02 0.01 2500000 est_mot_vide [9]
0.01 0.00 1864665/3413876 egales [12]
0.00 0.00 60/20994 longueur [21]
-----------------------------------------------
0.01 0.02 1499989/1499989 compter_mots_ligne [2]
[10] 6.5 0.01 0.02 1499989 compter_mot [10]
0.00 0.02 1499989/1499989 chercher_mot [13]
0.00 0.00 6076/27010 copier [20]
-----------------------------------------------
0.02 0.00 12656214/12656214 normaliser_ligne [4]
[11] 4.4 0.02 0.00 12656214 en_minuscule [11]
-----------------------------------------------
0.01 0.00 1549211/3413876 chercher_mot [13]
0.01 0.00 1864665/3413876 est_mot_vide [9]
[12] 4.4 0.02 0.00 3413876 egales [12]
-----------------------------------------------
0.00 0.02 1499989/1499989 compter_mot [10]
[13] 4.2 0.00 0.02 1499989 chercher_mot [13]
0.01 0.00 1499989/1499989 hacher_mot [15]
0.01 0.00 1549211/3413876 egales [12]
-----------------------------------------------
0.00 0.00 27934/9027924 generer_vocabulaire [18]
0.01 0.00 8999990/9027924 generer_texte [6]
[14] 2.2 0.01 0.00 9027924 alea [14]
-----------------------------------------------
0.01 0.00 1499989/1499989 chercher_mot [13]
[15] 2.2 0.01 0.00 1499989 hacher_mot [15]
-----------------------------------------------
12150 fusionner_entrees [16]
0.01 0.00 1/1 trier_entrees [17]
[16] 2.2 0.01 0.00 1+12150 fusionner_entrees [16]
0.00 0.00 68597/68597 doit_echanger [19]
12150 fusionner_entrees [16]
-----------------------------------------------
0.00 0.01 1/1 main [1]
[17] 2.2 0.00 0.01 1 trier_entrees [17]
0.01 0.00 1/1 fusionner_entrees [16]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[18] 0.0 0.00 0.00 1 generer_vocabulaire [18]
0.00 0.00 27934/9027924 alea [14]
0.00 0.00 20934/20934 ajouter [22]
-----------------------------------------------
0.00 0.00 68597/68597 fusionner_entrees [16]
[19] 0.0 0.00 0.00 68597 doit_echanger [19]
0.00 0.00 15787/15787 comparer [23]
-----------------------------------------------
0.00 0.00 6076/27010 compter_mot [10]
0.00 0.00 20934/27010 ajouter [22]
[20] 0.0 0.00 0.00 27010 copier [20]
-----------------------------------------------
0.00 0.00 60/20994 est_mot_vide [9]
0.00 0.00 20934/20994 ajouter [22]
[21] 0.0 0.00 0.00 20994 longueur [21]
-----------------------------------------------
0.00 0.00 20934/20934 generer_vocabulaire [18]
[22] 0.0 0.00 0.00 20934 ajouter [22]
0.00 0.00 20934/20994 longueur [21]
0.00 0.00 20934/27010 copier [20]
-----------------------------------------------
0.00 0.00 15787/15787 doit_echanger [19]
[23] 0.0 0.00 0.00 15787 comparer [23]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[24] 0.0 0.00 0.00 1 construire_rapport [24]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[25] 0.0 0.00 0.00 1 ecart_type_longueur [25]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[26] 0.0 0.00 0.00 1 empreinte [26]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[27] 0.0 0.00 0.00 1 longueur_moyenne [27]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[28] 0.0 0.00 0.00 1 racine [28]
-----------------------------------------------
Index by function name
[8] _init [20] copier [16] fusionner_entrees
[22] ajouter [5] decouper_lignes [6] generer_texte
[14] alea [19] doit_echanger [18] generer_vocabulaire
[3] analyser_bigrammes [25] ecart_type_longueur [15] hacher_mot
[13] chercher_mot [12] egales [21] longueur
[23] comparer [26] empreinte [27] longueur_moyenne
[10] compter_mot [11] en_minuscule [4] normaliser_ligne
[2] compter_mots_ligne [7] est_lettre [28] racine
[24] construire_rapport [9] est_mot_vide [17] trier_entrees