Compare commits
	
		
			2 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 40bed0cb34 | |||
| 1043182b8b | 
							
								
								
									
										25
									
								
								compte_rendu
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								compte_rendu
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | ||||
| premiere execution de gprof avec les arguments 100 10 1  | ||||
|  | ||||
| %   cumulative   self              self     total            | ||||
|  time   seconds   seconds    calls  Ts/call  Ts/call  name     | ||||
|   0.00      0.00     0.00     1010     0.00     0.00  bubblesort | ||||
|   0.00      0.00     0.00     1000     0.00     0.00  find_rank_student | ||||
|   0.00      0.00     0.00      200     0.00     0.00  print_array | ||||
|   0.00      0.00     0.00      100     0.00     0.00  generate_array | ||||
|   0.00      0.00     0.00        2     0.00     0.00  free_array | ||||
|   0.00      0.00     0.00        2     0.00     0.00  print_student_array | ||||
|   0.00      0.00     0.00        1     0.00     0.00  generate_grades | ||||
|   0.00      0.00     0.00        1     0.00     0.00  generate_ranks | ||||
|   0.00      0.00     0.00        1     0.00     0.00  sort_students | ||||
| Resultat pas tres interessant | ||||
|  | ||||
| deuxieme execution de gprof avec les arguments  1000 1000 | ||||
|  | ||||
|   | ||||
| test avec les argument 1000 10000 0 | ||||
| le programme a pris 30 secondes et on a remarquer que cetait bubulesort qui prend | ||||
|  le plus de temps a executer | ||||
|  | ||||
| finalement on va modifier le nombre de fois est appeler bubulle sort | ||||
|  | ||||
| on va essayer de profiller un de notre code | ||||
							
								
								
									
										
											BIN
										
									
								
								student_rank
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								student_rank
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										110
									
								
								student_rank.c
									
									
									
									
									
								
							
							
						
						
									
										110
									
								
								student_rank.c
									
									
									
									
									
								
							| @@ -6,120 +6,118 @@ | ||||
| #include "heapsort.h" | ||||
| #include "bubblesort.h" | ||||
|  | ||||
| void generate_grades(int** students_array, int students_number, int grades_number) | ||||
| void generate_grades(int **students_array, int students_number, int grades_number) | ||||
| { | ||||
|     int i = 0; | ||||
|     for(i=0;i<students_number;i++) | ||||
|     for (i = 0; i < students_number; i++) | ||||
|     { | ||||
| 	students_array[i] = (int*) malloc(grades_number*sizeof(int)); | ||||
|         generate_array(students_array[i],grades_number); | ||||
|         students_array[i] = (int *)malloc(grades_number * sizeof(int)); | ||||
|         generate_array(students_array[i], grades_number); | ||||
|     } | ||||
| } | ||||
|  | ||||
| void generate_ranks(int** students_array, int students_number, int grades_number) | ||||
| void generate_ranks(int **students_array, int students_number, int grades_number) | ||||
| { | ||||
|     int i = 0; | ||||
|     int j = 0; | ||||
|     for(i=0;i<students_number;i++) | ||||
|     for (i = 0; i < students_number; i++) | ||||
|     { | ||||
| 	students_array[i] = (int*) malloc(grades_number*sizeof(int)); | ||||
|         for(j=0;j<grades_number;j++) | ||||
| 	{ | ||||
|         students_array[i] = (int *)malloc(grades_number * sizeof(int)); | ||||
|         for (j = 0; j < grades_number; j++) | ||||
|         { | ||||
|             students_array[i][j] = -1; | ||||
| 	} | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| void free_array(int** students_array, int students_number) | ||||
| void free_array(int **students_array, int students_number) | ||||
| { | ||||
|     int i = 0; | ||||
|     for(i=0;i<students_number;i++) | ||||
|     for (i = 0; i < students_number; i++) | ||||
|     { | ||||
|         free(students_array[i]); | ||||
|     } | ||||
| } | ||||
|  | ||||
| void print_student_array(int** students_array, int students_number, int grades_number) | ||||
| void print_student_array(int **students_array, int students_number, int grades_number) | ||||
| { | ||||
|     int i = 0; | ||||
|     printf("----------------------\n"); | ||||
|     for(i=0;i<students_number;i++) | ||||
|     for (i = 0; i < students_number; i++) | ||||
|     { | ||||
| 	printf("Student %d : ",i); | ||||
|         print_array(students_array[i],grades_number); | ||||
|         printf("Student %d : ", i); | ||||
|         print_array(students_array[i], grades_number); | ||||
|     } | ||||
|     printf("----------------------\n"); | ||||
| } | ||||
|  | ||||
| int find_rank_student(int student_grade, int* grades_array, int students_number) | ||||
| 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--) | ||||
|     for (i = students_number - 1; i >= 0; i--) | ||||
|     { | ||||
|         if(grades_array[i] == student_grade) | ||||
| 	{ | ||||
|             position = students_number-i; | ||||
| 	    break; | ||||
| 	} | ||||
|         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) | ||||
| 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++) | ||||
|     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); | ||||
| 	for(j = 0; j < students_number; j++) | ||||
| 	{ | ||||
|             students_rank[j][i] = find_rank_student(students_array[j][i],grades,students_number); | ||||
| 	} | ||||
| 	free(grades); | ||||
|         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); | ||||
|         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 main(int argc, char **argv) | ||||
| { | ||||
|     int** student_grades = NULL; | ||||
|     int** student_ranks = NULL; | ||||
|     int **student_grades = NULL; | ||||
|     int **student_ranks = NULL; | ||||
|     int students_length = 0; | ||||
|     int grades_length = 0; | ||||
|     int debug_mode = 0; | ||||
|      | ||||
|     if(argc != 4) | ||||
|  | ||||
|     if (argc != 4) | ||||
|     { | ||||
|         printf("Usage : %s <number of student> <number of grade per student> <debug mode : 0|1>\n",argv[0]); | ||||
|         printf("Usage : %s <number of student> <number of grade per student> <debug mode : 0|1>\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) | ||||
|     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); | ||||
|         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_array(student_grades, students_length); | ||||
|     free_array(student_ranks, students_length); | ||||
|     free(student_grades); | ||||
|     free(student_ranks); | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user