diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..26d33521af10bcc7fd8cea344038eaaeb78d0ef5 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000000000000000000000000000000000000..105ce2da2d6447d11dfe32bfb846c3d5b199fc99 --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ +<component name="InspectionProjectProfileManager"> + <settings> + <option name="USE_PROJECT_PROFILE" value="false" /> + <version value="1.0" /> + </settings> +</component> \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000000000000000000000000000000000000..055f8e6f15802a8c3ed2715b8f0c759a23f8f0da --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="Black"> + <option name="sdkName" value="Python 3.13 (environnement)" /> + </component> + <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.13 (environnement)" project-jdk-type="Python SDK" /> +</project> \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000000000000000000000000000000000000..28dfc9aca66065bbcd92236e0c464b1349c2d91a --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ProjectModuleManager"> + <modules> + <module fileurl="file://$PROJECT_DIR$/.idea/tp2-hachage.iml" filepath="$PROJECT_DIR$/.idea/tp2-hachage.iml" /> + </modules> + </component> +</project> \ No newline at end of file diff --git a/.idea/tp2-hachage.iml b/.idea/tp2-hachage.iml new file mode 100644 index 0000000000000000000000000000000000000000..a7801594c84798512956927d63fe0e3198ddf72a --- /dev/null +++ b/.idea/tp2-hachage.iml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module type="PYTHON_MODULE" version="4"> + <component name="NewModuleRootManager"> + <content url="file://$MODULE_DIR$" /> + <orderEntry type="jdk" jdkName="Python 3.13 (environnement)" jdkType="Python SDK" /> + <orderEntry type="sourceFolder" forTests="false" /> + </component> + <component name="PyDocumentationSettings"> + <option name="format" value="PLAIN" /> + <option name="myDocStringFormat" value="Plain" /> + </component> +</module> \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000000000000000000000000000000000000..35eb1ddfbbc029bcab630581847471d7f238ec53 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="VcsDirectoryMappings"> + <mapping directory="" vcs="Git" /> + </component> +</project> \ No newline at end of file diff --git a/__pycache__/tp_2_miso_mphf.cpython-313.pyc b/__pycache__/tp_2_miso_mphf.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..28673da4928e5debf5d1e2ca9e52a701471e1cef Binary files /dev/null and b/__pycache__/tp_2_miso_mphf.cpython-313.pyc differ diff --git a/histogramme.png b/histogramme.png new file mode 100644 index 0000000000000000000000000000000000000000..2b6e07f92367b27c2fe77374b212c57977df2a1b Binary files /dev/null and b/histogramme.png differ diff --git a/mphf.png b/mphf.png new file mode 100644 index 0000000000000000000000000000000000000000..972f666ddf89536cd02c5df7f5fc95361430c896 Binary files /dev/null and b/mphf.png differ diff --git a/tp_2_miso_dict.py b/tp_2_miso_dict.py index cf5948dfc104b6394deb1edf7fbb5d14c48eeb55..35c7449a79fa189c25aa85952cd9a2158ce45061 100644 --- a/tp_2_miso_dict.py +++ b/tp_2_miso_dict.py @@ -11,7 +11,46 @@ def experiment_load_factor(load_factors): """ Étude du facteur de charge """ - return [],[],[] + insertion_times = [] + search_times = [] + deletion_times = [] + + for load_factor in load_factors: + d = {} + size = int(10000 * load_factor) # Taille de la structure en fonction du facteur charge + + # 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é + + 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)} + + # 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) + + return insertion_times, search_times, deletion_times + def experiment_longest(): """