Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Nadi Tomeh
SDA
Commits
574fac32
Commit
574fac32
authored
Nov 18, 2021
by
Hammoutene_Rafik
Browse files
ajout du fichier main croissant
parent
629bc3b1
Pipeline
#4622
failed with stage
in 6 seconds
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
C/main_croissant.c
0 → 100644
View file @
574fac32
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include "arraylist.h"
#include "analyzer.h"
#include "tasbinaire.h"
int
main
(
int
argc
,
char
**
argv
){
int
i
;
// Creation du tas binaire
tas_binaire_t
*
a
=
creer_tas_binaire
(
90
);
// Analyse du temps pris par les opérations.
analyzer_t
*
time_analysis
=
analyzer_create
();
// Analyse du nombre de copies faites par les opérations.
analyzer_t
*
copy_analysis
=
analyzer_create
();
// Analyse de l'espace mémoire inutilisé.
analyzer_t
*
memory_analysis
=
analyzer_create
();
// Analyse du nombre d'echange effectuée.
analyzer_t
*
swap_analysis
=
analyzer_create
();
// Mesure de la durée d'une opération.
struct
timespec
before
,
after
;
clockid_t
clk_id
=
CLOCK_REALTIME
;
// utilisé comme booléen pour savoir si une allocation a été effectuée.
char
memory_allocation
;
//Ajout des valeururs dans l'ordre croissant
for
(
i
=
0
,
i
<
90
;
i
++
){
// Ajout d'un élément et mesure du temps pris par l'opération.
clock_gettime
(
clk_id
,
&
before
);
memory_allocation
=
insertion_tas_binaire
(
a
,
i
);
clock_gettime
(
clk_id
,
&
after
);
// Enregistrement du temps pris par l'opération
analyzer_append
(
time_analysis
,
after
.
tv_nsec
-
before
.
tv_nsec
);
// Enregistrement du nombre de copies efféctuées par l'opération.
// S'il y a eu réallocation de mémoire, il a fallu recopier tout le tableau.
analyzer_append
(
copy_analysis
,
(
memory_allocation
)
?
i
:
1
);
// Enregistrement de l'espace mémoire non-utilisé.
analyzer_append
(
memory_analysis
,
tas_binaire_capacity
(
a
)
-
tas_binaire_size
(
a
));
// Enregistrement du nombre d'echange effectuée
analyzer_append
(
swap_analysis
,
tas_binaire_echange
(
a
));
}
// Affichage de quelques statistiques sur l'expérience.
fprintf
(
stderr
,
"Total cost: %Lf
\n
"
,
get_total_cost
(
time_analysis
));
fprintf
(
stderr
,
"Average cost: %Lf
\n
"
,
get_average_cost
(
time_analysis
));
fprintf
(
stderr
,
"Variance: %Lf
\n
"
,
get_variance
(
time_analysis
));
fprintf
(
stderr
,
"Standard deviation: %Lf
\n
"
,
get_standard_deviation
(
time_analysis
));
// Sauvegarde les données de l'expérience.
save_values
(
time_analysis
,
"../plots/dynamic_array_time_c_alpha_croissant.plot"
);
save_values
(
swap_analysis
,
"../plots/dynamic_array_swap_c_alpha_croissant.plot"
);
save_values
(
memory_analysis
,
"../plots/dynamic_array_memory_c_alpha_croissant.plot"
);
// Nettoyage de la mémoire avant la sortie du programme
tas_binaire_detruire
(
a
);
analyzer_destroy
(
time_analysis
);
analyzer_destroy
(
copy_analysis
);
analyzer_destroy
(
memory_analysis
);
return
EXIT_SUCCESS
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment