diff --git a/tp_2_miso_dict.py b/tp_2_miso_dict.py index 35c7449a79fa189c25aa85952cd9a2158ce45061..7763987633853a7bb3ddf87878bbf88f037d8028 100644 --- a/tp_2_miso_dict.py +++ b/tp_2_miso_dict.py @@ -14,21 +14,38 @@ def experiment_load_factor(load_factors): insertion_times = [] search_times = [] deletion_times = [] + num_resizes = [] + sizes = [] for load_factor in load_factors: - d = {} + d = {} # Dictionnaire vide size = int(10000 * load_factor) # Taille de la structure en fonction du facteur charge - # Mesure du temps d'insertion - start_time = time.time() + num_elements = 0 # Nombre d'éléments + num_resize = 0 # Nombre de réallocations de mémoire + last_size = sys.getsizeof(d) # Taille initiale du dictionnaire + + start_time = time.time() # Mesure du temps d'insertion + + # Insertion des éléments dans le dictionnaire for i in range(size): key = str(i) - value = i - d[key] = value - - insertion_time = time.time() - start_time - insertion_times.append(insertion_time) + value = i + d[key] = value + num_elements += 1 + + # Vérifier le nombre de réallocations mémoire + current_resize = sys.getsizeof(d) + if current_resize > last_size: + num_resize += 1 + last_size = current_resize + insertion_time = time.time() - start_time + insertion_times.append(insertion_time) + num_resizes.append(num_resize) + sizes.append(last_size) + + # Mesure du temps de recherche start_time = time.time() for i in range(size): @@ -49,7 +66,7 @@ def experiment_load_factor(load_factors): deletion_time = time.time() - start_time deletion_times.append(deletion_time) - return insertion_times, search_times, deletion_times + return insertion_times, search_times, deletion_times, num_resizes, sizes def experiment_longest():