Files
TD1_DEV51_Qualite_Algo/Compte Rendu/README.md
2025-09-10 17:24:01 +02:00

3.8 KiB

Test

J'ai lancé l'algo avec 100k étudiants et 1k notes
ça prends du temps...

Pour 100 et 100 ça marche bien,
pour 1k et 1k ça prends 3s~
Pour 5k étudiants, ça a pris... pas eu le temps de finir

On va donc prendre 1k étudiants et 1k notes pour le profiling


Partie gprof

Flat profile

le temps et nombre dexecutions par fonction

Call graph

Voir l'arbre d'appel, le temps et nombre d'appel par fonction

Analyse

Le plus de temps a été pris par bubblesort

Flat Profile % cumulative self self total
time seconds seconds calls s/call s/call name
78.10 2.30 2.30 1001000 0.00 0.00 bubblesort
21.05 2.92 0.62 1000000 0.00 0.00 find_rank_student
1.02 2.96 0.03 1 0.03 2.96 sort_students
0.00 2.96 0.00 1000 0.00 0.00 generate_array
0.00 2.96 0.00 2 0.00 0.00 free_array
0.00 2.96 0.00 1 0.00 0.00 generate_grades
0.00 2.96 0.00 1 0.00 0.00 generate_ranks

Call Graph index % time self children called name
0.03 2.92 1/1 main [2]
[1] 100.0 0.03 2.92 1 sort_students [1]
0.62 2.30 1000000/1000000 find_rank_student [3]
0.00 0.00 1000/1001000 bubblesort [4]
-----------------------------------------------

[2] 100.0 0.00 2.96 main [2]
0.03 2.92 1/1 sort_students [1]
0.00 0.00 2/2 free_array [6]
0.00 0.00 1/1 generate_grades [7]
0.00 0.00 1/1 generate_ranks [8]
-----------------------------------------------
0.62 2.30 1000000/1000000 sort_students [1]
[3] 98.9 0.62 2.30 1000000 find_rank_student [3]
2.30 0.00 1000000/1001000 bubblesort [4] <-- gros probleme ici
-----------------------------------------------
0.00 0.00 1000/1001000 sort_students [1]
2.30 0.00 1000000/1001000 find_rank_student [3] <-- gros probleme ici
[4] 78.0 2.30 0.00 1001000 bubblesort [4] <-- gros probleme ici
-----------------------------------------------
0.00 0.00 1000/1000 generate_grades [7]
[5] 0.0 0.00 0.00 1000 generate_array [5]
-----------------------------------------------
0.00 0.00 2/2 main [2]
[6] 0.0 0.00 0.00 2 free_array [6]
-----------------------------------------------
0.00 0.00 1/1 main [2]
[7] 0.0 0.00 0.00 1 generate_grades [7]
0.00 0.00 1000/1000 generate_array [5]
-----------------------------------------------
0.00 0.00 1/1 main [2]
[8] 0.0 0.00 0.00 1 generate_ranks [8]
-----------------------------------------------

Changements dans le code

Un bubblesort inutile se trouvait dans la fonction find_rank_student, après l'avoir retiré ça passe à 0.4s. Mais maintenant c'est buggé

pour faire ce changement il faut changer while(swapped==1); car c'est possible qu'il faut faire plusieurs changements, donc il faut le changer en : while(swapped>0)

Passer au heapsort

c'est rapide