From 1e72ad094573cd315bb433bb07d158a43b44d908 Mon Sep 17 00:00:00 2001 From: DIALLO <mamadou.diallo4.etu@univ-lille.fr> Date: Mon, 10 Mar 2025 11:31:35 +0100 Subject: [PATCH] =?UTF-8?q?r=C3=A9ponse=20des=20questions=200,=201,=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.name | 1 + tp_2_miso_dict.py | 66 ++++++++++++++++++++++++++++------------------- 2 files changed, 40 insertions(+), 27 deletions(-) create mode 100644 .idea/.name diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..97c6977 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +tp_2_miso_mphf.py \ No newline at end of file diff --git a/tp_2_miso_dict.py b/tp_2_miso_dict.py index 35c7449..31eb415 100644 --- a/tp_2_miso_dict.py +++ b/tp_2_miso_dict.py @@ -1,3 +1,5 @@ +from re import search + import matplotlib.pyplot as plt import numpy as np import time @@ -9,46 +11,56 @@ import sys def experiment_load_factor(load_factors): """ - Étude du facteur de charge + Etude l'inmpact du facteur de charge sur les performances d'un dictionnaire Python. + Mesure les temps d'insertion, de recherche et de suppression pour différents facteurs de charge. + Returns: + insetion_times: liste contenant les temps d'insertion (en secondes) pour chaque facteur de charge. + search_times: Liste contenant les temps de recherchde (en secondes) pour chaque facteur de charge. + deletion_times: Liste contenant les temps de suppression (en secondes) pour chaque facteur de charge """ - insertion_times = [] - search_times = [] - deletion_times = [] + # 1- Initialisation des listes pour stocker les résultats + insertion_times = [] # Temps d'insertion pour chaque facteur de charge + search_times = [] # Temps de recherche pour chaque facteur de charge + deletion_times = [] # Temps de suppression pour chaque facteur de charge + + # 2. Boucle sur chaque facteur de charge donné en entrée for load_factor in load_factors: + # Création d'un dictionnaire vide au départ d = {} - size = int(10000 * load_factor) # Taille de la structure en fonction du facteur charge + + # Calcul de la taille du dictionnaire en fonction du facteur de charge + size = int(10000 * load_factor) # Mesure du temps d'insertion start_time = time.time() for i in range(size): key = str(i) - value = i - d[key] = value - - insertion_time = time.time() - start_time - insertion_times.append(insertion_time) - - # Mesure du temps de recherche - start_time = time.time() - for i in range(size): - key = str(i) - _ = d.get(key) # Recherche de la clé + value = i + d[key] = value # Insertion de la clé et de la valeur + insertion_time = time.time() - start_time + insertion_times.append(insertion_time) - search_time = time.time() - start_time - search_times.append(search_time) + # Mesure du temps de recherche + start_time = time.time() + for i in range(size): + key = str(i) + _ = d.get(key) # Recherche de la clé + search_time = time.time() - start_time + search_times.append(search_time) - # Réiitialisation du dictionnaire pour la suppression - d = {str(i): i for i in range(size)} + # Réinitialisation du dictionnaire pour la suppression + d = {str(i): i for i in range(size)} - # Mesure du temps de suppression - start_time = time.time() - for i in range(size): - key = str(i) - del d[key] - deletion_time = time.time() - start_time - deletion_times.append(deletion_time) + # Mesure du temps de suppression + start_time = time.time() + for i in range(size): + key = str(i) + del d[key] # Suppression de la clé + deletion_time = time.time() - start_time + deletion_times.append(deletion_time) + # Retour des résultats return insertion_times, search_times, deletion_times -- GitLab