From e6baa74259cb9cb0bbf3408fd183fc13b9456f2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ay=C3=A2t=20Chergui?= <ayat@Ordinateur-portable-de-Ayat.local> Date: Thu, 27 Feb 2025 12:27:43 +0100 Subject: [PATCH] fini --- TP2_hachage/tp_2_miso_dict.py | 55 +++++++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 15 deletions(-) diff --git a/TP2_hachage/tp_2_miso_dict.py b/TP2_hachage/tp_2_miso_dict.py index b4fa921..4fbb51e 100644 --- a/TP2_hachage/tp_2_miso_dict.py +++ b/TP2_hachage/tp_2_miso_dict.py @@ -2,6 +2,7 @@ import matplotlib.pyplot as plt import numpy as np import time import sys +import math #test modif du push après peripétie @@ -15,24 +16,30 @@ def experiment_load_factor(load_factors): #= load_factor = liste de facteur de c num_resizes = [] sizes = [] - for i in load_factors: - dict = {} + for i in load_factors: + dico = {} 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 + last_size = sys.getsizeof(dico) #taile dico après insertion + insertion_per_factor = [] - 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 + 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(): """ @@ -59,13 +66,31 @@ def visualisation(load_factors, insertion_times, num_resizes, sizes, frequencies Visualisation des résultats """ # 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() + f = list(frequencies) plt.figure(figsize=(10, 6)) plt.bar(range(len(f)), f) plt.xlabel('Temps d\'insertion (s)') -- GitLab