From 83c915801c1a720a212035ad1d2c5d103921a2d7 Mon Sep 17 00:00:00 2001 From: akagunduz Date: Wed, 10 Sep 2025 17:21:59 +0200 Subject: [PATCH] maj --- TD1.txt | 200 +++++++++++++++++++++++++++++++++++++++++++++++++ bubblesort.c | 2 +- gmon.out | Bin 0 -> 4036 bytes quicksort.c | 28 +++++++ quicksort.h | 6 ++ student_rank | Bin 0 -> 22824 bytes student_rank.c | 5 +- 7 files changed, 237 insertions(+), 4 deletions(-) create mode 100644 TD1.txt create mode 100644 gmon.out create mode 100644 quicksort.c create mode 100644 quicksort.h create mode 100755 student_rank diff --git a/TD1.txt b/TD1.txt new file mode 100644 index 0000000..932e591 --- /dev/null +++ b/TD1.txt @@ -0,0 +1,200 @@ +DAVID AKAGUNDUZ ET JAMES BOUTARIC + + +TD1 + +Nous avons commencé par lancer les progmramme récuprér depuis le git de Maxime Menault puis nous les avons compiler et lancer avec des valeur qui prenne un peu de temps nous avons decider de prendre comem valeur 1000 et 1000 pour que ca dure un minimun de temps d'éxécution + +ex : gcc -g -pg -o student_rank student_rank.c heapsort.c bubblesort.c + + ./student_rank 5000 1000 0 + +Suite a cela nous utilisons gprof pour analyser le programme lancer , + +gprof ./student_rank + +il y a plussieur information qu'on peut retrouver comme : + +le temps de répartition entre les differentes fonctions, +le temps d'd'éxecution cumulé au fur et à mesure (dans l'ordre d'utilisation des fonction) , +le temps pris par chacune des fonctions, +le nombre de fois que la fonction a était appeller, +le nombre de temps pris par appel en milliseconde, +le nombre total pris pour avoir éxécuter tout les appel de la fonction et aussi celle que lui appel (ses enfants). +enfin le nom de la fonction en question. + + +ex: + +Flat Profile + +Each sample counts as 0.01 seconds. + % cumulative self self total + time seconds seconds calls s/call s/call name + 79.80 2.35 2.35 1001000 0.00 0.00 bubblesort + 19.35 2.92 0.57 1000000 0.00 0.00 find_rank_student + 0.34 2.93 0.01 1000 0.00 0.00 generate_array + 0.34 2.94 0.01 1 0.01 0.01 generate_ranks + 0.34 2.96 0.01 1 0.01 2.93 sort_students + 0.00 2.96 0.00 2 0.00 0.00 free_array + 0.00 2.96 0.00 1 0.00 0.01 generate_grades + + +---------------------------------------------------------------------------------------------- + + + Call graph (explanation follows) + + +granularity: each sample hit covers 2 byte(s) for 0.34% of 2.96 seconds + +index % time self children called name + +[1] 100.0 0.00 2.96 main [1] + 0.01 2.92 1/1 sort_students [2] + 0.00 0.01 1/1 generate_grades [6] + 0.01 0.00 1/1 generate_ranks [7] + 0.00 0.00 2/2 free_array [8] +----------------------------------------------- + 0.01 2.92 1/1 main [1] +[2] 99.3 0.01 2.92 1 sort_students [2] + 0.57 2.35 1000000/1000000 find_rank_student [3] + 0.00 0.00 1000/1001000 bubblesort [4] +----------------------------------------------- + 0.57 2.35 1000000/1000000 sort_students [2] +[3] 98.9 0.57 2.35 1000000 find_rank_student [3] + 2.35 0.00 1000000/1001000 bubblesort [4] +----------------------------------------------- + 0.00 0.00 1000/1001000 sort_students [2] + 2.35 0.00 1000000/1001000 find_rank_student [3] +[4] 79.7 2.35 0.00 1001000 bubblesort [4] +----------------------------------------------- + 0.01 0.00 1000/1000 generate_grades [6] +[5] 0.3 0.01 0.00 1000 generate_array [5] +----------------------------------------------- + 0.00 0.01 1/1 main [1] +[6] 0.3 0.00 0.01 1 generate_grades [6] + 0.01 0.00 1000/1000 generate_array [5] +----------------------------------------------- + 0.01 0.00 1/1 main [1] +[7] 0.3 0.01 0.00 1 generate_ranks [7] +----------------------------------------------- + 0.00 0.00 2/2 main [1] +[8] 0.0 0.00 0.00 2 free_array [8] +----------------------------------------------- + + +les information comme : +l'index (pour chaque element de la table) +le pourcentage detemsp pris par chacune des des fonction et de ses enfants +Self le nomre total de temps pris par la fonction +Children le nombre total pris par ses enfant +Le nombre de fois que la fonction est appeler +ainsi quele nom de la fonction en question + +Résumer : + +Le grpof : + +----> Flat profile : temps et nbr d'éxecution/fonctions (ici bublesort 80%) + +----> Call Graph : Vor arbre fonction + temps et nombre d'éxecution/fonction + +Fonction la plus lente: bubblesort +Nombre appel important de bubblesort dans le find_rank_student + + +Nous avons analyser le code et nosu avons trouvé comment optimiser en reduisant le temps d'éxecution dans le code ( i lfaut supprimer l'apple dela fonction bubblesort dans find_rank_student) + + +Pour corriger l'erreur du calssement des note des élève il faut modiifer la condition du tri a bulle ( bubblesort) car sa condition n'était correct du fait qu'elle valide en permanance sa condition.( mauvaise condition i ldoit verifier qu'il y a aucun échange entre pour que ca soit bon) +void bubblesort(int* array, int length) +{ + int swapped, i, tmp; + do + { + swapped = 0; + for(i=1;i array[i]) + { + tmp = array[i-1]; + array[i-1] = array[i]; + array[i] = tmp; + swapped++; + } + } + } while(swapped>0); +} + +---------------------------------------------- + +Si on change bubblesort par heapsort alors le temps d'exécution est beaucoup plus rapide + +Flat profile: + +Each sample counts as 0.01 seconds. + % cumulative self self total + time seconds seconds calls ms/call ms/call name +100.17 0.04 0.04 1000000 0.00 0.00 find_rank_student + 0.00 0.04 0.00 1500000 0.00 0.00 sift + 0.00 0.04 0.00 1000 0.00 0.00 generate_array + 0.00 0.04 0.00 1000 0.00 0.00 heapsort + 0.00 0.04 0.00 2 0.00 0.00 free_array + 0.00 0.04 0.00 1 0.00 0.00 generate_grades + 0.00 0.04 0.00 1 0.00 0.00 generate_ranks + 0.00 0.04 0.00 1 0.00 40.07 sort_students + + +-------------------------------------------------- + + + + + + + + + Call graph + + +granularity: each sample hit covers 2 byte(s) for 24.96% of 0.04 seconds + +index % time self children called name + 0.04 0.00 1000000/1000000 sort_students [2] +[1] 100.0 0.04 0.00 1000000 find_rank_student [1] +----------------------------------------------- + 0.00 0.04 1/1 main [3] +[2] 100.0 0.00 0.04 1 sort_students [2] + 0.04 0.00 1000000/1000000 find_rank_student [1] + 0.00 0.00 1000/1000 heapsort [6] +----------------------------------------------- + +[3] 100.0 0.00 0.04 main [3] + 0.00 0.04 1/1 sort_students [2] + 0.00 0.00 2/2 free_array [7] + 0.00 0.00 1/1 generate_grades [8] + 0.00 0.00 1/1 generate_ranks [9] +----------------------------------------------- + 384971 sift [4] + 0.00 0.00 1500000/1500000 heapsort [6] +[4] 0.0 0.00 0.00 1500000+384971 sift [4] + 384971 sift [4] +----------------------------------------------- + 0.00 0.00 1000/1000 generate_grades [8] +[5] 0.0 0.00 0.00 1000 generate_array [5] +----------------------------------------------- + 0.00 0.00 1000/1000 sort_students [2] +[6] 0.0 0.00 0.00 1000 heapsort [6] + 0.00 0.00 1500000/1500000 sift [4] +----------------------------------------------- + 0.00 0.00 2/2 main [3] +[7] 0.0 0.00 0.00 2 free_array [7] +----------------------------------------------- + 0.00 0.00 1/1 main [3] +[8] 0.0 0.00 0.00 1 generate_grades [8] + 0.00 0.00 1000/1000 generate_array [5] +----------------------------------------------- + 0.00 0.00 1/1 main [3] +[9] 0.0 0.00 0.00 1 generate_ranks [9] +----------------------------------------------- diff --git a/bubblesort.c b/bubblesort.c index a848827..1e88188 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..9fa69fc6d217035c99ea27fcd02672161af38ae6 GIT binary patch literal 4036 zcmYe#&Cg?GzyVBTArb-X3=Am@3=GAo$@zIH#SlRT1~>yIFiMYxz-S1JhQMeDjE2By z2#kgR=^=o#DMGqYBSZ&gh=D{vcyI>5PX+}B76t|eHU8(# zW>%s-&Wl$iwcLZ(l2OTF9s;PT2*G0-r2b}OU*(8Uu12 z;{~YTMr6ScP{CzT?O>G#;t;c9gdsFo&;gs^0jN_lq#-IFWOgtxK7b0s+zA$BfOg4| F1pz=jAVL5D literal 0 HcmV?d00001 diff --git a/quicksort.c b/quicksort.c new file mode 100644 index 0000000..76d00fc --- /dev/null +++ b/quicksort.c @@ -0,0 +1,28 @@ +#include "quicksort.h" + +int partition(int* array, int low, int high) + { + int pivot = array[high]; + int i = low -1; + int j =low; + for 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 iM0kTK2J{7hFnb}g4B+lMHvQ$`NjC #include "heapsort.h" #include "bubblesort.h" +#include "quicksort.h" void generate_grades(int** students_array, int students_number, int grades_number) { @@ -55,7 +56,6 @@ int find_rank_student(int student_grade, int* grades_array, int students_number) { int position = -1; int i = 0; - bubblesort(grades_array,students_number); for(i = students_number-1; i >= 0; i--) { if(grades_array[i] == student_grade) @@ -77,8 +77,7 @@ void sort_students(int** students_rank, int** students_array, int students_numbe { grades[j] = students_array[j][i]; } - bubblesort(grades,students_number); - for(j = 0; j < students_number; j++) + quicksort(grades, 0, students_number - 1); for(j = 0; j < students_number; j++) { students_rank[j][i] = find_rank_student(students_array[j][i],grades,students_number); }