Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
T
TP2_Sania_Ayat_SD
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Ayat Chergui
TP2_Sania_Ayat_SD
Commits
374ba3b0
Commit
374ba3b0
authored
1 month ago
by
Sania Mekchiche
Browse files
Options
Downloads
Patches
Plain Diff
fini1
parent
368f0ddc
Branches
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
TP2_hachage/tp_2_miso_dict.py
+86
-57
86 additions, 57 deletions
TP2_hachage/tp_2_miso_dict.py
with
86 additions
and
57 deletions
TP2_hachage/tp_2_miso_dict.py
+
86
−
57
View file @
374ba3b0
...
...
@@ -2,80 +2,109 @@ import matplotlib.pyplot as plt
import
numpy
as
np
import
time
import
sys
import
math
#test modif du push après peripétie
# test modif du push après peripétie
###### PARTIE 2 ######
def
experiment_load_factor
(
load_factors
):
#
= load_factor = liste de facteur de charge
"""
def
experiment_load_factor
(
load_factors
):
#
= load_factor = liste de facteur de charge
"""
Étude du facteur de charge
"""
insertion_times
=
[]
num_resizes
=
[]
sizes
=
[]
for
i
in
load_factors
:
dict
=
{}
num_elements
=
0
#nombre d'élement dans table
num_resize
=
0
#taille dico
last_size
=
sys
.
getsizeof
(
dict
)
#taile dico après insertion
start_time
=
time
.
time
()
# tps avant insertion
while
num_elements
<
load_factors
:
#remplie table tant que taille attendue par facteur de charge pas atteint
dict
[
num_elements
]
=
num_elements
num_elements
=+
1
last_size
=
sys
.
getsizeof
(
dict
)
num_resize
=+
1
#on ajoute 1 élement donc 1 position en +
end_time
=
time
.
time
()
#temps fin insertion
insertion_times
.
append
(
end_time
-
start_time
)
#temps totale
sizes
.
append
(
last_size
)
#on ajoute la nouvelle taille dans la liste
num_resizes
.
append
(
num_resize
)
#nouvelle table
return
insertion_times
,
num_resizes
,
sizes
insertion_times
=
[]
num_resizes
=
[]
sizes
=
[]
for
i
in
load_factors
:
dico
=
{}
num_elements
=
0
# nombre d'élement dans table
num_resize
=
0
# taille dico
last_size
=
sys
.
getsizeof
(
dico
)
# taile dico après insertion
insertion_per_factor
=
[]
while
num_elements
<
(
i
*
100
):
# remplie table tant que taille attendue par facteur de charge pas atteint
start_time
=
time
.
perf_counter
()
dico
[
num_elements
]
=
num_elements
end_time
=
time
.
perf_counter
()
insertion_per_factor
.
append
(
end_time
-
start_time
)
# temps totale
num_elements
+=
1
current_size
=
sys
.
getsizeof
(
dico
)
if
current_size
>
last_size
:
last_size
=
current_size
num_resize
+=
1
# on ajoute 1 élement donc 1 position en +
insertion_times
.
append
(
np
.
mean
(
insertion_per_factor
))
sizes
.
append
(
last_size
)
# on ajoute la nouvelle taille dans la liste
num_resizes
.
append
(
num_resize
)
# nouvelle table
print
(
insertion_times
)
return
insertion_times
,
num_resizes
,
sizes
def
experiment_longest
():
"""
"""
TODO: cette focntion apour objectif de créer un dictionnaire, à partir d
'
une valleur de départ,
pour chaque iteration, elle associé une clé qui est la chaine de caractère de la valeur. A chaque insertion, le temps
est ajouté est mésuré et est stocké dans une variable.
A la fin un histogramme est créer et stocké dans un histogramme.
"""
d
=
{}
insertion_times
=
[]
for
i
in
range
(
10000
):
key
=
str
(
i
)
value
=
i
start_time
=
time
.
time
()
d
[
key
]
=
value
insertion_time
=
time
.
time
()
-
start_time
insertion_times
.
append
(
insertion_time
)
frequencies
=
np
.
histogram
(
insertion_times
)[
0
]
return
frequencies
d
=
{}
insertion_times
=
[]
for
i
in
range
(
10000
):
key
=
str
(
i
)
value
=
i
start_time
=
time
.
time
()
d
[
key
]
=
value
insertion_time
=
time
.
time
()
-
start_time
insertion_times
.
append
(
insertion_time
)
frequencies
=
np
.
histogram
(
insertion_times
)[
0
]
return
frequencies
def
visualisation
(
load_factors
,
insertion_times
,
num_resizes
,
sizes
,
frequencies
):
"""
"""
Visualisation des résultats
"""
# Temps d'insertion en fonction du facteur de charge
# Nombre de réallocations de mémoire en fonction du facteur de charge
# Taille de mémoire occupée en fonction du nombre d'éléments
# Deuxième étude
f
=
list
()
plt
.
figure
(
figsize
=
(
10
,
6
))
plt
.
bar
(
range
(
len
(
f
)),
f
)
plt
.
xlabel
(
'
Temps d
\'
insertion (s)
'
)
plt
.
ylabel
(
'
Fréquence
'
)
plt
.
title
(
'
Histogramme des fréquences des temps d
\'
insertions
'
)
plt
.
yscale
(
'
log
'
)
xticks
=
np
.
logspace
(
-
6
,
1
,
3
)
xtick_labels
=
[
f
'
{
x
:
.
1
e
}
'
for
x
in
xticks
]
plt
.
xticks
(
xticks
,
xtick_labels
)
plt
.
savefig
(
'
histogramme.png
'
)
# Temps d'insertion en fonction du facteur de charge
plt
.
figure
(
figsize
=
(
10
,
6
))
plt
.
bar
(
load_factors
,
insertion_times
,
width
=
0.01
,
label
=
"
insertion_time
"
,
color
=
'
blue
'
)
plt
.
xlabel
(
'
load factor
'
)
plt
.
ylabel
(
'
Temps d
\'
inserstion
'
)
plt
.
title
(
'
Histogramme du temps des insertions en fonction des facteurs de charge
'
)
plt
.
savefig
(
'
histogramme 7A
'
)
# Nombre de réallocations de mémoire en fonction du facteur de charge
plt
.
figure
(
figsize
=
(
10
,
6
))
plt
.
bar
(
load_factors
,
num_resizes
,
width
=
0.05
,
label
=
"
num_resize
"
,
color
=
'
green
'
)
plt
.
xlabel
(
'
load factor
'
)
plt
.
ylabel
(
'
num resize
'
)
plt
.
title
(
'
Histogramme du nombre de reallocations de mémoire en fonction du facteur de charge
'
)
plt
.
savefig
(
'
Histogramme 7B
'
)
# Taille de mémoire occupée en fonction du nombre d'éléments
plt
.
figure
(
figsize
=
(
10
,
6
))
plt
.
bar
(
sizes
,
num_resizes
,
width
=
100
,
color
=
'
red
'
,
label
=
"
Nombre de réallocations
"
)
# Augmente width si valeurs élevées
plt
.
xlabel
(
'
size
'
)
plt
.
ylabel
(
'
num_resizes
'
)
plt
.
title
(
'
Histogramme de la taille de mémoire occupé en fonction du nombre d
\'
élements
'
)
plt
.
savefig
(
'
Histogramme 7C
'
)
# Deuxième étude
f
=
list
(
frequencies
)
plt
.
figure
(
figsize
=
(
10
,
6
))
plt
.
bar
(
range
(
len
(
f
)),
f
)
plt
.
xlabel
(
'
Temps d
\'
insertion (s)
'
)
plt
.
ylabel
(
'
Fréquence
'
)
plt
.
title
(
'
Histogramme des fréquences des temps d
\'
insertions
'
)
plt
.
yscale
(
'
log
'
)
xticks
=
np
.
logspace
(
-
6
,
1
,
3
)
xtick_labels
=
[
f
'
{
x
:
.
1
e
}
'
for
x
in
xticks
]
plt
.
xticks
(
xticks
,
xtick_labels
)
plt
.
savefig
(
'
histogramme.png
'
)
load_factors
=
[
0.01
,
0.1
,
0.2
,
0.3
,
0.4
,
0.5
,
0.6
,
0.7
,
0.8
,
0.9
,
1.0
]
insertion_times
,
num_resizes
,
sizes
=
experiment_load_factor
(
load_factors
)
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment