remarque.txt ajout
This commit is contained in:
parent
ca552281c9
commit
fd8ce04a1a
12
bubblesort.c
12
bubblesort.c
@ -11,11 +11,19 @@ void bubblesort(int* array, int length)
|
|||||||
{
|
{
|
||||||
if(array[i-1] > array[i])
|
if(array[i-1] > array[i])
|
||||||
{
|
{
|
||||||
tmp = array[i-1];
|
/*tmp = array[i-1];
|
||||||
array[i-1] = array[i];
|
array[i-1] = array[i];
|
||||||
array[i] = tmp;
|
array[i] = tmp;*/
|
||||||
|
swap(array[i-1],array[i]);
|
||||||
swapped++;
|
swapped++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} while(swapped==1);
|
} while(swapped==1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void swap(int a, int b)
|
||||||
|
{
|
||||||
|
int temp = a;
|
||||||
|
a = b;
|
||||||
|
b = temp;
|
||||||
|
}
|
||||||
|
32
remarques.txt
Normal file
32
remarques.txt
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
Test 1:
|
||||||
|
|
||||||
|
gcc -g -pg -o student_rank student_rank.c heapsort.c bubblesort.c
|
||||||
|
./student_rank 5 5 1
|
||||||
|
gprof ./student_rank
|
||||||
|
|
||||||
|
Suite a la première analyse avec gprof, on observe que le programme s'est executé pratiquement instantanément, et que aucun temps n'a été utilisé par aucune fonction.
|
||||||
|
|
||||||
|
Test 2:
|
||||||
|
|
||||||
|
./student_rank 1000 5 1
|
||||||
|
gprof ./student_rank
|
||||||
|
|
||||||
|
Suite à la deuxieme analyse, on voit que du temps a été utilisé. cependant il est tellement infime, que gprof indique une utilisation de 100% du temps pour la fonction bublesort et sortstudent.
|
||||||
|
|
||||||
|
Test 3:
|
||||||
|
|
||||||
|
./student_rank 1000 1000 0
|
||||||
|
gprof ./student_rank
|
||||||
|
|
||||||
|
suite a cette troiseme tentative, on note qu'une différence commence a se créer dans les fonctions.
|
||||||
|
bublesort utilise 80.56% du temps d'execution, et find_rank_student 19.61%.
|
||||||
|
tout le reste n'est que peu consomateur de temps.
|
||||||
|
durée 28s
|
||||||
|
gprof -b ./student_rank
|
||||||
|
|
||||||
|
Profiling:
|
||||||
|
|
||||||
|
Puisque bublesort est appelé de nombreuse fois, o peux essayer de diminuer le nombre d'appel.
|
||||||
|
|
||||||
|
On remarque alors que l'appel de bubblesort dan sla fonction find rank est innutile et peut donc la supprimé.
|
||||||
|
la durée passe alors à 0.5s
|
BIN
student_rank
Executable file
BIN
student_rank
Executable file
Binary file not shown.
@ -55,7 +55,7 @@ int find_rank_student(int student_grade, int* grades_array, int students_number)
|
|||||||
{
|
{
|
||||||
int position = -1;
|
int position = -1;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
bubblesort(grades_array,students_number);
|
//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)
|
if(grades_array[i] == student_grade)
|
||||||
@ -78,6 +78,7 @@ void sort_students(int** students_rank, int** students_array, int students_numbe
|
|||||||
grades[j] = students_array[j][i];
|
grades[j] = students_array[j][i];
|
||||||
}
|
}
|
||||||
bubblesort(grades,students_number);
|
bubblesort(grades,students_number);
|
||||||
|
//heapsort(grades,students_number);
|
||||||
for(j = 0; j < students_number; j++)
|
for(j = 0; j < students_number; j++)
|
||||||
{
|
{
|
||||||
students_rank[j][i] = find_rank_student(students_array[j][i],grades,students_number);
|
students_rank[j][i] = find_rank_student(students_array[j][i],grades,students_number);
|
||||||
|
Loading…
Reference in New Issue
Block a user