forked from menault/2026_TD1_DEV51_Qualite_Algo
opti 2
This commit is contained in:
+24
-4
@@ -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
@@ -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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user