forked from menault/TD1_DEV51_Qualite_Algo
3.8 KiB
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 totaltime 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 name0.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