From bdc2f6e6db0b15f5736e32c6b7dc3c6e8cf24c1b Mon Sep 17 00:00:00 2001 From: nelet Date: Tue, 3 Sep 2024 11:54:26 +0200 Subject: [PATCH] ajout modif --- gmon.out | Bin 0 -> 3828 bytes modif/pdn.txt | 23 ++++++++ modif/student_rank.c | 125 +++++++++++++++++++++++++++++++++++++++++++ student_rank | Bin 0 -> 21888 bytes student_rank.c | 2 +- 5 files changed, 149 insertions(+), 1 deletion(-) create mode 100644 gmon.out create mode 100644 modif/pdn.txt create mode 100644 modif/student_rank.c create mode 100755 student_rank diff --git a/gmon.out b/gmon.out new file mode 100644 index 0000000000000000000000000000000000000000..33ef2345f3617d100d15cd1bddf8f3697b5fb275 GIT binary patch literal 3828 zcmYe#&Cg?GzyYR6LnL0XF)*Y6nZ>Ee`FSbDFx7AdOkk8A4S~@R7!85Z5Eu=C(GVC7 zfzc44M+jgx-&E1x>c*7ECqju{RC6Jz99axvHo^u33t82` zu^A@_K`j3w387yw10%*k6v8ow3JRzL1vfwiT}2?04bx^YFdh(ta5SLCfc(e!04lf{ zS?~i?a1B&DSfznDM0>n2ga!*bU=vh;I)zCBqVmFSD+a~_G{Jx(9|pz?Xo3a#GZ+Bw Cj2adI literal 0 HcmV?d00001 diff --git a/modif/pdn.txt b/modif/pdn.txt new file mode 100644 index 0000000..3831375 --- /dev/null +++ b/modif/pdn.txt @@ -0,0 +1,23 @@ +Gprof ./student_rank -b (-b = pour ne pas afficher tout le texte): + +Flat profile : + +Nous permet de voir les différentes métrique d'exec du programme comme temps(tps), nb appel, tps/fct, nom etc... +Puis nous avons un arbre d'appel du programme ou il faut regarder le numéro d'index + +call graph : + +les fct au dessus de la fct d'index sont les appellant (les fonctions qui appellent la fonction d'index) +ceux en dessous sont les appellé, ils sont appellé par la fonction d'index + +D'ailleurs plus le nombre de note a généré est élévé, plus forcément le systeme est censé prendre du temps (métrique du temps qui augmente) + +plusieurs moyen d'opti : +-réduire nombre d'appel +-modifier la fonction +-utiliser d'autre fct + +On peut retirer l'un des deux appels de bubblesort, celui dans find_rank car le tableau a deja été trié préalablement dans sort_student nous faisant passer d'environ 30sec a 0.8sec + +l'utilisation de heapsort fait perdre environ 0.4sec + diff --git a/modif/student_rank.c b/modif/student_rank.c new file mode 100644 index 0000000..6fe887f --- /dev/null +++ b/modif/student_rank.c @@ -0,0 +1,125 @@ +// Student rank +// M.Menault 2024 + +#include +#include +#include "heapsort.h" +#include "bubblesort.h" + +void generate_grades(int** students_array, int students_number, int grades_number) +{ + int i = 0; + for(i=0;i= 0; i--) + { + if(grades_array[i] == student_grade) + { + position = students_number-i; + break; + } + } + return position; +} + +void sort_students(int** students_rank, int** students_array, int students_number, int grades_number) +{ + int i = 0, j = 0; + for(i = 0; i < grades_number; i++) + { + int * grades = (int*) malloc(students_number*sizeof(int)); + for(j = 0; j < students_number; j++) + { + grades[j] = students_array[j][i]; + } + bubblesort(grades,students_number); // on peut changer en mettant heapsort + for(j = 0; j < students_number; j++) + { + students_rank[j][i] = find_rank_student(students_array[j][i],grades,students_number); + } + free(grades); + } +} + +int main(int argc, char** argv) +{ + int** student_grades = NULL; + int** student_ranks = NULL; + int students_length = 0; + int grades_length = 0; + int debug_mode = 0; + + if(argc != 4) + { + printf("Usage : %s \n",argv[0]); + return -1; + } + students_length = atoi(argv[1]); + grades_length = atoi(argv[2]); + debug_mode = atoi(argv[3]); + + student_grades = (int**) malloc(students_length*sizeof(int*)); + student_ranks = (int**) malloc(students_length*sizeof(int*)); + generate_grades(student_grades,students_length,grades_length); + generate_ranks(student_ranks,students_length,grades_length); + + sort_students(student_ranks,student_grades,students_length,grades_length); + + if(debug_mode) + { + print_student_array(student_grades,students_length,grades_length); + print_student_array(student_ranks,students_length,grades_length); + } + + free_array(student_grades,students_length); + free_array(student_ranks,students_length); + free(student_grades); + free(student_ranks); + return 0; +} + diff --git a/student_rank b/student_rank new file mode 100755 index 0000000000000000000000000000000000000000..07e903ced5b21fc7bc7aacc974a3c97c824ef5a4 GIT binary patch literal 21888 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 SN7J9YMM}^!1Lk5w+5ZB&dZlat literal 0 HcmV?d00001 diff --git a/student_rank.c b/student_rank.c index af84003..f20a420 100644 --- a/student_rank.c +++ b/student_rank.c @@ -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);