Skip to content
Snippets Groups Projects
Commit 374ba3b0 authored by Sania Mekchiche's avatar Sania Mekchiche
Browse files

fini1

parent 368f0ddc
Branches
No related tags found
No related merge requests found
......@@ -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:.1e}' 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:.1e}' 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)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment