Files
TD1_DEV51_Qualite_Algo/rapport_Hugo_raban
2025-09-10 17:25:08 +02:00

107 lines
4.5 KiB
Plaintext

[raban@salle235-04 TD1_DEV51_Qualite_Algo]$ time ./student_rank 1000 1000 0
real 0m2.975s
user 0m2.963s
sys 0m0.007s
[raban@salle235-04 TD1_DEV51_Qualite_Algo]$ gprof ./student_rank
Flat Profile : temps et nombre d'exécution par fonction
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls s/call s/call name
79.14 2.32 2.32 1001000 0.00 0.00 bubblesort
18.46 2.86 0.54 1000000 0.00 0.00 find_rank_student
2.05 2.92 0.06 1 0.06 2.92 sort_students
0.34 2.93 0.01 1 0.01 0.01 generate_ranks
0.17 2.93 0.01 1000 0.00 0.00 generate_array
0.00 2.93 0.00 2 0.00 0.00 free_array
0.00 2.93 0.00 1 0.00 0.01 generate_grades
légende :
% time : pourcentage de temps passé sur une fonction.
Cumulative seconds : somme des secondes compté par celle de la fonction et ceux listés au dela de la seconde
Self seconds : le nombre de seconde compté par cette fonction seul
Calls : nombre de fois où la fonction est appelé
Self ms/call : le nombre moyen de millisecondes passé dans la fonction par appel (si la fonction est profilé
), sinon la colonne reste vide
Total ms/call : le nombre moyen de millisecondes passé sur la fonction et ses descendants par appel (si la fonction est profilé
), sinon la colonne reste vide
Name : nom de la fonction
Call graph : arbre d'appel fonctions + temps execution par fonction
index % time self children called name
<spontaneous>
[1] 100.0 0.00 2.93 main [1]
0.06 2.86 1/1 sort_students [2]
0.01 0.00 1/1 generate_ranks [5]
0.00 0.01 1/1 generate_grades [7]
0.00 0.00 2/2 free_array [8]
-----------------------------------------------
0.06 2.86 1/1 main [1]
[2] 99.5 0.06 2.86 1 sort_students [2]
0.54 2.32 1000000/1000000 find_rank_student [3]
0.00 0.00 1000/1001000 bubblesort [4]
-----------------------------------------------
0.54 2.32 1000000/1000000 sort_students [2]
[3] 97.4 0.54 2.32 1000000 find_rank_student [3]
2.32 0.00 1000000/1001000 bubblesort [4]
-----------------------------------------------
0.00 0.00 1000/1001000 sort_students [2]
2.32 0.00 1000000/1001000 find_rank_student [3]
[4] 79.0 2.32 0.00 1001000 bubblesort [4]
-----------------------------------------------
0.01 0.00 1/1 main [1]
[5] 0.3 0.01 0.00 1 generate_ranks [5]
-----------------------------------------------
0.01 0.00 1000/1000 generate_grades [7]
[6] 0.2 0.01 0.00 1000 generate_array [6]
-----------------------------------------------
0.00 0.01 1/1 main [1]
[7] 0.2 0.00 0.01 1 generate_grades [7]
0.01 0.00 1000/1000 generate_array [6]
-----------------------------------------------
0.00 0.00 2/2 main [1]
[8] 0.0 0.00 0.00 2 free_array [8]
-----------------------------------------------
légende :
Index : nombre unique donné à chaque éléments de la table
% time : pourcentage du "total" de temps qui ont été passé sur cette fonction et ses enfants
Self : nombre total de temps passé par la fonction
Children : nombre total de temps passé par la fonction par ses enfants
Called : nombre de fois que la fonction à été appellé. Si la fonction s'appelle elle-même, le nombre n'inclue pas les appelles récursifs
Name : nom de la fonction
fonction la plus lente : bubblesort
N?ombre d'appel important de bubblesortr dans la fonction : 1000000
Optimisation possible :
- modifier find_rank_student et sort_student afin qu'il y est un seul tri + une gestion des égalité un peu mieux
- dans bubblesort, mettre while(swapped>0)
temps : 3,145s, c'est bien mais pas assez
usage de heapsort au lieu de bubblesort.
temps : 0.124s super efficace!
Pour qiktri, il est plus lent alors qu'il est censé etre plus rapide.