From 2613a9beb382d83d1e07b9ebcfb93f2819a30896 Mon Sep 17 00:00:00 2001 From: Jannaire Date: Wed, 10 Sep 2025 17:10:03 +0200 Subject: [PATCH] td1 --- Rapport.txt | 26 ++++++++++++++++++++++++++ bubblesort.c | 2 +- gmon.out | Bin 0 -> 3820 bytes student_rank | Bin 0 -> 21912 bytes student_rank.c | 4 ++-- 5 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 Rapport.txt create mode 100644 gmon.out create mode 100755 student_rank diff --git a/Rapport.txt b/Rapport.txt new file mode 100644 index 0000000..cf5edca --- /dev/null +++ b/Rapport.txt @@ -0,0 +1,26 @@ +Rapport TD1 : + +j'ai compilé le code avec la commande : +gcc -g -pg -o student_rank student_rank.c heapsort.c bubblesort.c + +J'ai exécuté le programme avec différents nombres d'étudiants et de notes avec la commande suivante : +./student_rank + +On remarque qu'avec 1000 étudiants et 1000 notes, le temps est d'environ 3 secondes et avec 5000 étudiants et 1000 notes, nous avons environ +1 minute 25, ce qui montre que le temps d'exécution est exponentiel. + +Ensuite j'ai utilisé l'outil prof pour analyser le programme : + +Flat profile -> le temps et le nombre d'exécution +Call graph -> Voir l'arbre d'appel fonction + le temps et le nombre d'exécution + +La fonction la plus longue est bubblesort, Nbr d'appel important + +j'ai enlevé l'appel de la fonction bubblesort cela réduit le nombre d'appels et on gagne un tout petit peu de temps, mais il y a un bug + +Le bug de tri vient de la fonction bubblesort car le Swapped était = 1 donc j'ai modifié le et mis swepped > 0. + +Quand je remplace le bublesort par le heapsort on gagne beaucoup de temps. + +Après dernière vérification avec Gprof, on remarque qu'il ne manque quasiment plus grand-chose pour optimiser car la vitesse d'exécution +est très rapide \ No newline at end of file diff --git a/bubblesort.c b/bubblesort.c index a848827..2ad5aaa 100644 --- a/bubblesort.c +++ b/bubblesort.c @@ -17,5 +17,5 @@ void bubblesort(int* array, int length) swapped++; } } - } while(swapped==1); + } while(swapped > 0); } diff --git a/gmon.out b/gmon.out new file mode 100644 index 0000000000000000000000000000000000000000..895dcc1fc7018053c2d09bea9290f95e548acdf9 GIT binary patch literal 3820 zcmYe#&Cg?GzyVsMArep67#LC*7#NCElk@XZiXnmw3~&ZaV3ZyWfzc2c4S~@R7!85Z z5Eu=C(GZ|#2tb-~Ad-avMAFl4;_L#sikpE6>^f!!eg<_0HU?G(1_qEA6LChsRe{U` zVUPf-UOtcz9t_i^h(`^`Rd}RFycG5n1`Ao#;K3AS2B!c9D2Y%FN*S1{5%S0^)HsL9 zfJ}g~@zMBg0m*_ex(V3C(AB{BFts2T!PuyB=%O%L`qPXJLJ&(|NG(;t=gI!VnrPXn;*n f0P2*VP)RTQi42ShXo4%w?_*#*fF`&jrIrx@^@tqM literal 0 HcmV?d00001 diff --git a/student_rank b/student_rank new file mode 100755 index 0000000000000000000000000000000000000000..cd848b3b19804d90185f41afce37cbb6f4250d73 GIT binary patch literal 21912 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 ee>B5k_CjPCz}<0d`k#A2RDi|>AS?)pt{(s#2= 0; i--) { if(grades_array[i] == student_grade) @@ -77,7 +77,7 @@ void sort_students(int** students_rank, int** students_array, int students_numbe { grades[j] = students_array[j][i]; } - bubblesort(grades,students_number); + heapsort(grades,students_number); for(j = 0; j < students_number; j++) { students_rank[j][i] = find_rank_student(students_array[j][i],grades,students_number);