From d519985116cd7b5af9a4f554db8ecdc698ba3c65 Mon Sep 17 00:00:00 2001 From: 9ff7eb902e8f0358b234efe9f0500594 <9ff7eb902e8f0358b234efe9f0500594@app-learninglab.inria.fr> Date: Tue, 7 May 2024 23:11:26 +0000 Subject: [PATCH] 2mm --- module3/exo1/2mm-a.svg | 1348 +++++++++++++++++++++++++++ module3/exo1/2mm-b.svg | 976 +++++++++++++++++++ module3/exo1/2mm-reuse-distance.svg | 1108 ++++++++++++++++++++++ module3/exo1/2mm-taux-de-pages.svg | 186 +++- module3/exo1/Test.ipynb | 86 +- module3/exo1/histogramme.svg | 1335 ++++++++++++++++++++++++++ 6 files changed, 4990 insertions(+), 49 deletions(-) create mode 100644 module3/exo1/2mm-a.svg create mode 100644 module3/exo1/2mm-b.svg create mode 100644 module3/exo1/2mm-reuse-distance.svg create mode 100644 module3/exo1/histogramme.svg diff --git a/module3/exo1/2mm-a.svg b/module3/exo1/2mm-a.svg new file mode 100644 index 0000000..775819f --- /dev/null +++ b/module3/exo1/2mm-a.svg @@ -0,0 +1,1348 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/module3/exo1/2mm-b.svg b/module3/exo1/2mm-b.svg new file mode 100644 index 0000000..5ae221c --- /dev/null +++ b/module3/exo1/2mm-b.svg @@ -0,0 +1,976 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/module3/exo1/2mm-reuse-distance.svg b/module3/exo1/2mm-reuse-distance.svg new file mode 100644 index 0000000..6062500 --- /dev/null +++ b/module3/exo1/2mm-reuse-distance.svg @@ -0,0 +1,1108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/module3/exo1/2mm-taux-de-pages.svg b/module3/exo1/2mm-taux-de-pages.svg index 29bd707..dda74a1 100644 --- a/module3/exo1/2mm-taux-de-pages.svg +++ b/module3/exo1/2mm-taux-de-pages.svg @@ -27,7 +27,7 @@ z " style="fill:#ffffff;"/> - - - - - - - + + + + + + + + + + + + + + + + + + + + + @@ -88,10 +144,10 @@ z +" id="m09169bc70a" style="stroke:#000000;stroke-width:0.8;"/> - + @@ -159,7 +215,7 @@ z - + @@ -215,7 +271,7 @@ z - + @@ -276,7 +332,7 @@ z - + @@ -350,7 +406,7 @@ z - + @@ -366,7 +422,7 @@ z - + @@ -383,7 +439,7 @@ z - + @@ -620,10 +676,10 @@ z +" id="mb1ad62ad15" style="stroke:#000000;stroke-width:0.8;"/> - + @@ -659,7 +715,7 @@ z - + @@ -673,7 +729,7 @@ z - + @@ -687,7 +743,7 @@ z - + @@ -701,7 +757,7 @@ z - + @@ -715,7 +771,7 @@ z - + @@ -729,7 +785,7 @@ z - + @@ -743,7 +799,7 @@ z - + @@ -768,7 +824,7 @@ z - + @@ -782,7 +838,7 @@ z - + @@ -828,7 +884,7 @@ z - + @@ -1080,22 +1136,22 @@ z - + - + - + - + @@ -1120,6 +1176,14 @@ z + + + + + + + + @@ -1129,7 +1193,15 @@ z - + + + + + + + + + @@ -1140,7 +1212,15 @@ z - + + + + + + + + + @@ -1151,7 +1231,15 @@ z - + + + + + + + + + @@ -1162,7 +1250,15 @@ z - + + + + + + + + + @@ -1173,7 +1269,15 @@ z - + + + + + + + + + @@ -1184,10 +1288,18 @@ z + + + + + + + + - + diff --git a/module3/exo1/Test.ipynb b/module3/exo1/Test.ipynb index 4eb4a2a..5e877d7 100644 --- a/module3/exo1/Test.ipynb +++ b/module3/exo1/Test.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 17, + "execution_count": 51, "metadata": {}, "outputs": [], "source": [ @@ -12,21 +12,24 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 52, "metadata": {}, "outputs": [], "source": [ - "memoire = np.array([92.43, 90.9, 88.82, 86.04, 82.66, 78.85, 73.23])" + "used_page = np.array([92.43, 90.9, 88.82, 86.04, 82.66, 78.85, 73.23]) # Taux de page utilisé\n", + "miss_rate = np.array([23.86, 8.66, 4.86, 2.55, 1.38, 0.8, 0.5]) # Taux de miss\n", + "\n", + "reuse_distance = np.array([11, 12, 13, 14, 15, 16, 17]) # Reuse distance" ] }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 62, "metadata": {}, "outputs": [ { "data": { - "image/png": "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5thjj+Whhx6iW7duDB06lLq6Om688cZ1nhXUvXv3DS5Tbaztd77zHb7xjW/wk5/8hKFDhzJ27FjGjBnDz3/+87Y+PUlSOxQRj2RmXXP7OYLThGo8iqYj5ZsNJ2W/613v2mBSdkvbnnvuuZx77rkAnHHGGVx88cX88Ic/ZOrUqQwcOJD/+q//qtg5SZJqg3NwtFkam5Tds2dPFi9eDMDixYvZZZddym7b0GOPPQbAvvvuyw033MCtt97K7Nmz15nTJElSY0xwtFkam5R9zDHHMGnSJKA0gfrYY48tu21DF154IRdffDFvv/02q1evBugQk68lSdXnJSptlsYmZZ933nmcdNJJ/OhHP2K33Xbjf//3fwE2mJTdWNs17rjjDoYMGULv3r0BeP/738+BBx7IwIEDOeigg9r+RCVJHYqTjJvgHBy1xPjx4/nhD39IRHDggQdy/fXX88wzz/DpT3+aN998k86dO/O9732PQw89tKy222yzDeeccw4///nP6dq1K3vttRfXX389O+64Iw8++CBnnnkmW2+9Nbfccgt77703y5cv5+STT+aee+6xppmkmlPuJGMvUUmtaOHChVx99dXMmjWL2bNns3r1aiZPnsy5557LRRddxOOPP87FF1+8dhJ1OW2BjRZ8tWCrJDWuaglORJwVEbMj4qmI+HyxbqeImBYRc4rX7s19jqorom1/OoJVq1axYsUKVq1aRX19Pb179yYieO211wB49dVX1156K6ctsNGCrxZslaTGVWUOTkQMAP4DOBRYCdwTEb8o1k3PzMsi4jzgPOBL1YhRaok+ffowduxYdtttN7p168bw4cMZPnw4u+66K0ceeSRjx47lnXfe4Xe/+13ZbdfXsOCrBVslqXHVGsHpB8zMzPrMXAXcDxwPHAtMKvaZBBxXpfikFnnllVe48847eeGFF1i0aBFvvPEGN910ExMmTGD8+PHMnz+f8ePHc/rpp5fdtqH1C75asFWSGletBGc28E8R8Z6I2Bb4GLAr0DMzFwMUr40+QCUixkTErIiYtWzZsjYLWmrOr3/9a/bcc0969OhBly5dGDFiBL/73e+YNGkSI0aMAGDkyJE8/PDDZbddo6mCrx25YKskVUJVEpzMfBq4HJgG3AM8AazahPYTM7MuM+t69OhRoSilTbfbbrsxc+ZM6uvryUymT59Ov3796N27N/fffz8A99577wYPNWyqLdBswdeOWrBVkiqlas/BycwfAT8CiIivAQuAJRHRKzMXR0QvYGm14pNa4rDDDuPEE09k8ODBdO7cmYMPPpgxY8Zw8MEHc9ZZZ7Fq1Sq22WYbJk6cCKz7bKCNtQU2WvAVOnbBVkmqlKo9BycidsnMpRGxGzAVeD/wZeClBpOMd8rMDe+nbcDn4FRXW/dRR+sfSVLr6gjFNm+LiPcAbwOfzcxXIuIy4NaIOB14ERhZxfikzWaSLEnVUc1LVB9sZN1LwNAqhCNJkmqITzKW1ObGjx9P//79GTBgAKeeeipvvvkmAN/5znfYb7/96N+/f6NPe4bShOv99tuPvffem8suu2yD7d/61reICP76178C8OCDDzJw4ECGDBnCc889B8Dy5cs58sgj6eilaiRtnMU2JbWpNSUp/vSnP9GtWzdOOukkJk+ezO67786dd97Jk08+ydZbb7222nxDq1ev5rOf/SzTpk2jb9++DBkyhGOOOYYDDjgAgPnz5zNt2jR22223tW3WlLOYN28eEyZM4IorrrCchbQFcARHUptrrCTFhAkTOO+889h6660B2GWXDR+D9fDDD7P33nvzvve9j65du3LKKadw5513rt3+hS98gW984xvrJC6Ws5C2TCY4ktpUw5IUvXr1YocddmD48OH8+c9/5je/+Q2HHXYYRxxxBH/4wx82aLtw4UJ23XXXtct9+/Zl4cKFAEyZMoU+ffpw0EEHrdNmTTmLK6+8ks997nNccMEFlrOQtgBeopLUphqWpNhxxx0ZOXIkN910E6tWreKVV15h5syZ/OEPf+Ckk05i7ty564zGNDZnJiKor6/n0ksvXfssoIbWlLMAeOCBB9YpZ9GlSxeuuOIKevbsWbkTllQVjuBIalMbK0nRt29fRowYQURw6KGH0qlTp7UThdfo27cv8+fPX7u8YMECevfuzfPPP88LL7zAQQcdxB577MGCBQsYPHgwf/nLX9buazkLactigiOpTW2sJMVxxx3HvffeC8Cf//xnVq5cyc4777xO2yFDhjBnzhxeeOEFVq5cyeTJkznmmGM48MADWbp0KfPmzWPevHn07duXRx99lPe+971r21rOQtqyeIlKUpvaWEmKiOBTn/oUAwYMoGvXrkyaNImIWKecRefOnbnmmms48sgjWb16NZ/61Kfo379/s8e0nIW05alaqYbWYqmG6rJUQ9P8DklS6+oIpRokbeFMACVVinNwJElSzTHBkSRJNccER5LamcZqdZ1zzjnsv//+DBw4kOOPP57ly5c32nb58uWceOKJ7L///vTr14+HHnpo7bbGan1Zq0u1ygRHktqRNbW6Zs2axezZs1m9ejWTJ09m2LBhzJ49myeffJJ9992Xr3/96422P+usszjqqKN45plneOKJJ+jXrx8AM2bMWFvr66mnnmLs2LHA32t1fe1rX2PChAkA1upSTTDBkaR2prFaXcOHD6dz59J9IYcffjgLFizYoN1rr73GAw88wOmnnw5A165d2XHHHQE2WuvLWl2qVSY4ktSObKxWV0PXXXcdH/3oRzdoO3fuXHr06MEnP/lJDj74YM444wzeeOMNgI3W+rJWl2qVCY4ktSMNa3UtWrSIN954g5tuumnt9ksvvZTOnTtz2mmnbdB21apVPProo5x55pk89thjbLfddlx22WVrt62p9fXNb36Tk046icxcW6trxowZzJ07d51aXaNGjWLJkiVtdu5SazLBkaR2ZGO1uqBUbuKuu+7i5ptvbnR+TN++fenbty+HHXYYACeeeCKPPvro2m1N1fqyVpdqjQmOJLUjG6vVdc8993D55ZczZcoUtt1220bbvve972XXXXfl2WefBWD69OkccMABAM3W+rJWl2qNTzKWpHZkY7W6+vfvz1tvvcWwYcOA0kTja6+9dp1aXVC6Ffy0005j5cqVvO997+P6668H4FOf+lSjtb7AWl2qTdaiaoKPkW+etaia5neoafaPpE1lLSpJqgEmgVLLOAdHkiTVHBMcSZJUc0xwJElSzTHBkSRJNccER5Ik1RwTHElSh/Lss88yaNCgtT/bb789V155JY8//jiHH344gwYNoq6ujocffrjR9uPHj6d///4MGDCAU089lTfffBOAr3zlK/Tp02ft5655ttCDDz7IwIEDGTJkCM899xwAy5cv58gjj6SjP2qlpmVmVX6ALwBPAbOBW4BtgJ2AacCc4rV7c59zyCGHZKWUbpZs25+Oxv5pmt+hptk/zbOPmrZq1ars2bNnzps3L4cNG5Z33313Zmb+4he/yCOOOGKD/RcsWJB77LFH1tfXZ2bmyJEj8/rrr8/MzIsuuii/+c1vbtDm+OOPzz//+c85derUPPvsszMz8+yzz8777ruvMielJgGzMpvPM6oyghMRfYD/BOoycwCwFXAKcB4wPTP3AaYXy5IkNWr69Onstdde7L777kQEr732GgCvvvoqvXv3brTNqlWrWLFiBatWraK+vn6j+63RpUsXVqxYQX19PV26dOH5559n4cKFHHHEEa1+Pmo91XzQX2egW0S8DWwLLALOBz5UbJ8E3Ad8qRrBSZLav8mTJ3PqqacCcOWVV3LkkUcyduxY3nnnnbVFShvq06cPY8eOZbfddqNbt24MHz6c4cOHr91+zTXXcMMNN1BXV8cVV1xB9+7dOf/88xkzZgzdunXjxhtvZOzYsXz1q19ts3NUy1RlBCczFwLfAl4EFgOvZuZUoGdmLi72WQzs0lj7iBgTEbMiYtayZcvaKmxJUjuycuVKpkyZwsiRIwGYMGEC48ePZ/78+YwfP57TTz99gzavvPIKd955Jy+88AKLFi3ijTfe4KabbgLgzDPP5Pnnn+fxxx+nV69efPGLXwRg0KBBzJw5kxkzZjB37lx69+5NZnLyySczatQolixZ0nYnrbJV6xJVd+BYYE+gN7BdRIwqt31mTszMusys69GjR6XClCS1Y7/85S8ZPHgwPXv2BEoV0UeMGAHAyJEjG51k/Otf/5o999yTHj160KVLF0aMGLF2pKdnz55stdVWdOrUif/4j//YoH1mcskll3DhhRcybtw4xo0bx6hRo7j66qsrfKZqiWrdRfXPwAuZuSwz3wZ+BvwDsCQiegEUr0urFJ8kqZ275ZZb1l6eAujduzf3338/APfeey/77LPPBm122203Zs6cSX19PZnJ9OnT6devHwCLFy9eu9/tt9/OgAED1mk7adIkjj76aLp37059fT2dOnWiU6dO1NfXV+L0tJmqNQfnReDwiNgWWAEMBWYBbwCjgcuK1zurFJ8kqR2rr69n2rRpfP/731+77gc/+AFnnXUWq1atYptttmHixIkALFq0iDPOOIO7776bww47jBNPPJHBgwfTuXNnDj74YMaMGQPAueeey+OPP05EsMcee6zz2fX19UyaNImpU6cCcPbZZ3PCCSfQtWtXbrnlljY8c5UrSndcVeHAEeOAk4FVwGPAGcC7gFuB3SglQSMz8+WmPqeuri5nzZpVoRgr8rFNqtJ/jhZr6z6yf5rXkfrI/mmefSStKyIeycy65var2l1UmXkRcNF6q9+iNJojSVKzTAC1MT7JWJIk1RwTHEmSVHNMcCRJUs0xwZEkSTXHBEeSJNUcExxJklRzTHAkSVLNMcGRJEk1xwRHkiTVHBMcSZJUc0xwJElSzTHBkSSphjz77LMMGjRo7c/222/PlVdeyYUXXsjAgQMZNGgQw4cPZ9GiRRu0nT9/Ph/+8Ifp168f/fv356qrrlq7bWPtH3zwQQYOHMiQIUN47rnnAFi+fDlHHnkk1SroDVWsJt5arCZeXVYTb5rfoabZP82zj5pm/zRt9erV9OnTh9///vd0796d7bffHoCrr76aP/3pT1x77bXr7L948WIWL17M4MGDef311znkkEO44447OOCAA3jttdcabT9ixAguv/xy5s2bxz333MMVV1zBF7/4RY455hiOOOKIVj+ncquJO4IjSVKNmj59OnvttRe777772uQE4I033iAayQ579erF4MGDAXj3u99Nv379WLhwIcBG23fp0oUVK1ZQX19Ply5deP7551m4cGFFkptN0bmqR5ckSRUzefJkTj311LXLF1xwATfccAM77LADM2bMaLLtvHnzeOyxxzjssMOabH/++eczZswYunXrxo033sjYsWP56le/WpkT2gSO4EiSVINWrlzJlClTGDly5Np1l156KfPnz+e0007jmmuu2Wjbv/3tb5xwwglceeWV64zcNNZ+0KBBzJw5kxkzZjB37lx69+5NZnLyySczatQolixZUrmTbIIJjiRJNeiXv/wlgwcPpmfPnhts+8QnPsFtt93WaLu3336bE044gdNOO40RI0Y0uk9j7TOTSy65hAsvvJBx48Yxbtw4Ro0axdVXX735J9MCJjiSJNWgW265ZZ3LU3PmzFn7fsqUKey///4btMlMTj/9dPr168fZZ5+9zrbm2k+aNImjjz6a7t27U19fT6dOnejUqRP19fWtdUqbxLuomuDs/OZ5F1XT/A41zf5pnn3UNPuncfX19ey6667MnTuXHXbYAYATTjiBZ599lk6dOrH77rtz7bXX0qdPHxYtWsQZZ5zB3XffzW9/+1s++MEPcuCBB9KpU2kM5Gtf+xof+9jHNtp+zfGOPvpopk6dSpcuXfjNb37DZz7zGbp27cott9zCvvvu22rnVu5dVCY4TfAfTvNMcJrmd6hp9k/z7KOm2T9bnnITHO+ikiSphm2pSaBzcCRJUs0xwZEkSTXHBEeSJNUc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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjgAAAGoCAYAAABL+58oAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3Xl8FdX9//HXSRMEBdkMSAgICkrIHsJi1aLlS0BQURYVQbFC6delRWlErNKKqICILNpKEcUACvVXRKggggGUskcICCqrfCEJBUTW3CAEP78/CLfEBBNyEwjD+/l43Me9s5yZc4a5+s7cM3OcmSEiIiLiJUHnuwIiIiIipU0BR0RERDxHAUdEREQ8RwFHREREPEcBR0RERDxHAUdEREQ8p8iA45x72zm3xzm3/rR5NZxz851zm/Peq5+27Gnn3Bbn3EbnXLuyqriIiIjImRTnCs47QPufzBsIpJpZYyA1bxrnXFPgXiAyr8zfnHO/KLXaioiIiBRDkQHHzD4Hvv/J7E5ASt7nFODO0+ZPM7MfzOxbYAvQopTqKiIiIlIswSUsV9vMdgGY2S7nXK28+XWB5aetl5E3rwDnXF+gL8Bll13WrEmTJiWsioiIiFwsvvjii+/MLLSo9UoacM7EFTKv0LEgzGw8MB4gMTHR0tLSSrkqIiIi4jXOuf8rznolvYtqt3OuTt6O6gB78uZnAPVOWy8cyCrhPkRERERKpKQBZxbQK+9zL2DmafPvdc5d4pxrCDQGVgZWRREREZGzU+RPVM65qcDNwBXOuQzgL8Aw4H3nXG9gB9ANwMw2OOfeB74CcoFHzexEGdVdREREpFBFBhwz636GRW3OsP6LwIuBVEpERLzv+PHjZGRkcPTo0fNdFSmHKlasSHh4OCEhISUqX9qdjEVERIolIyODKlWq0KBBA5wr7B4VuViZGfv27SMjI4OGDRuWaBsaqkFERM6Lo0ePUrNmTYUbKcA5R82aNQO6uqeAIyIi543CjZxJoOeGAo6IiIh4jgKOiIiInDc7d+7k3XffLfXtKuCIiEi54Fzpvoqyb98+4uLiiIuL48orr6Ru3br+6WPHjpVpW3Nzc6lWrVqZ7qOsfPDBB3zzzTf+6WeeeYaFCxcCcOONN5Keng5Au3btOHz48M9u6/vvvyc5OZk2bQq9MTsguotKREQuSjVr1vT/z/i5556jcuXKJCcnn+dalX8ffPABQUFBnBpD8sUXC38yzCeffFLktmrUqME//vGPUq3fKbqCIyIi8hO33347zZo1IzIykgkTJgAFr7pMmzaNPn36ANCxY0fee+89AP7617/Sq1evAtvcunUrLVu2pHnz5jz33HP5lg0bNowWLVoQExPD888/X6DsqX0/8cQTJCQk0LZtW/bt2wfAuHHjaN68ObGxsXTr1o2cnBwANm/eTMuWLWnRogWDBg3KV/fi7u+nbV28eDFz5szhiSeeIC4uju3bt9OzZ08+/PDDAtsIDw/nwIEDHD58mFtvvZXY2FiioqL45z//CcCqVato3bo1zZo149Zbb2X37t2F/EuUnAKOiIjIT6SkpPDFF1+watUqXn31Vfbv3/+z60+YMIE///nPLF68mLFjxzJmzJgC6/z+97+nX79+rFq1itDQ/w6GPWfOHHbs2MGKFStIT09n6dKlLF26tED5gwcP0qpVK1avXs3111/PkCFDAOjWrRurVq1i7dq1XHPNNbzzzjv+/SUnJ7Ny5Upq16591vsrzE033USHDh0YNWoU6enpNGjQoMgyc+bMoUGDBqxdu5b169fTtm1bfvjhB/r168f06dP54osv6NmzJ4MGDSpWHYpLAUdEROQnRo0aRWxsLNdffz0ZGRls3br1Z9evU6cOf/7zn7nlllsYPXp0of1rli1bxj333APA/fff758/b948Pv74Y+Lj40lISGDLli1s2rSpQPng4GC6desGQM+ePfn3v/8NwLp167jpppuIjo5m2rRpbNiwAYAVK1bQpUsXAO67776z3l9piYmJYe7cuQwcOJAlS5ZQtWpVvv76azZs2MD//M//EBcXx7Bhw9i5c2ep7ld9cERERE7z6aef8vnnn7N8+XIqVarEjTfeyNGjRwkKCsLM/Ov99CF0X375JTVr1iQrK6vQ7TrnCn22i5nx7LPP0rt375+t10/Lnpp+4IEH+Pjjj4mKimLChAksX778Z7dTnP0V1dazERERQVpaGnPmzOHJJ5/ktttu49ZbbyUmJobFixeXeLtF0RUcERGR0xw8eJAaNWpQqVIlNmzYwKpVq4CT/9OvXr06mzdv5scff2TGjBn+MsuWLSM1NZXVq1czdOhQduzYUWC7rVq14v333wfId1t0u3bteOutt8jOzgZODmHx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pTnn0vbu3VtK1RAREREphYDjnKsA3AH8v7MpZ2bjzSzRzBJDQ0MDrYaIiIiIX2lcwbkVWG1mu/Omdzvn6gDkve8phX2IiIiIFFtpBJzu/PfnKYBZQK+8z72AmaWwDxEREZFiCyjgOOcuBdoCH5w2exjQ1jm3OW/ZsED2ISIiInK2ggMpbGY+oOZP5u3j5F1VIiIiIueFnmQsIiIinqOAIyIiIp6jgCMiIiKeo4AjIiIinqOAIyIiIp6jgCMiIiKeo4AjIiIinqOAIyIiIp6jgCMiIiKeo4AjIiIinqOAIyIiIp6jgCMiIiKeo4AjIiIinqOAIyIiIp6jgCMiIiKeo4AjIiIinqOAIyIiIp6jgCMiIiKeo4AjIiIinqOAIyIiIp6jgCMiIiKeo4AjIiIinqOAIyIiIp6jgCMiIiKeo4AjIiIinqOAIyIiIp6jgCMiIiKeo4AjIiIinhNQwHHOVXPO/dM5941z7mvn3PXOuRrOufnOuc1579VLq7IiIiIixRHoFZwxwFwzawLEAl8DA4FUM2sMpOZNi4iIiJwzJQ44zrnLgV8BbwGY2TEzOwB0AlLyVksB7gy0kiIiIiJnI5ArOFcDe4GJzrk1zrkJzrnLgNpmtgsg771WKdRTREREpNgCCTjBQALwhpnFA9mcxc9Rzrm+zrk051za3r17A6iGiIiISH6BBJwMIMPMVuRN/5OTgWe3c64OQN77nsIKm9l4M0s0s8TQ0NAAqiEiIiKSX4kDjpn9B9jpnLsub1Yb4CtgFtArb14vYGZANRQRERE5S8EBlv898K5zrgKwDfgNJ0PT+8653sAOoFuA+xARERE5KwEFHDNLBxILWdQmkO2KiIiIBEJPMhYRERHPUcARERERz1HAEREREc9RwBERERHPUcARERERz1HAEREREc9RwBERERHPUcARERERz1HAEREREc9RwBERERHPUcARERERz1HAEREREc9RwBERERHPUcARERERz1HAEREREc9RwBERERHPUcARERERz1HAEREREc9RwBERERHPUcARERERz1HAEREREc9RwBERERHPUcARERERz1HAEREREc9RwBERERHPUcARERERz1HAEREREc9RwBERERHPUcARERERzwkOpLBzbjtwGDgB5JpZonOuBvAPoAGwHbjbzPYHVk0RERGR4iuNKzi3mFmcmSXmTQ8EUs2sMZCaNy0iIiJyzpTFT1SdgJS8zynAnWWwDxEREZEzCjTgGDDPOfeFc65v3rzaZrYLIO+9VmEFnXN9nXNpzrm0vXv3BlgNERERkf8KqA8OcIOZZTnnagHznXPfFLegmY0HxgMkJiZagPUQERER8QvoCo6ZZeW97wFmAC2A3c65OgB573sCraSIiIjI2ShxwHHOXeacq3LqM5AErAdmAb3yVusFzAy0kiIiIiJnI5CfqGoDM5xzp7bznpnNdc6tAt53zvUGdgDdAq+miIiISPGVOOCY2TYgtpD5+4A2gVRKREREJBB6krGIiIh4jgKOiIiIeI4CjoiIiHiOAo6IiIh4jgKOiIiIeI4CjoiIiHiOAo6IiIh4jgKOiIiIeI4CjoiIiHiOAo6IiIh4jgKOiIiIeI4CjoiIiHiOAo6IiIh4jgKOiIiIeI4CjoiIiHiOAo6IiIh4jgKOiIiIeI4CjoiIiHiOAo6IiIh4jgKOiIiIeI4CjoiIiHiOAo6IiIh4jgKOiIiIeI4CjoiIiHiOAo6IiIh4jgKOiIiIeI4CjoiIiHiOAo6IiIh4TsABxzn3C+fcGufcR3nTNZxz851zm/PeqwdeTREREZHiK40rOP2Ar0+bHgikmlljIDVvWkREROScCSjgOOfCgY7AhNNmdwJS8j6nAHcGsg8RERGRsxXoFZzRwADgx9Pm1TazXQB577UC3IeIiIjIWSlxwHHO3QbsMbMvSli+r3MuzTmXtnfv3pJWQ0RERKSAQK7g3ADc4ZzbDkwDfu2cmwLsds7VAch731NYYTMbb2aJZpYYGhoaQDVERERE8itxwDGzp80s3MwaAPcCC8ysJzAL6JW3Wi9gZsC1FBERETkLZfEcnGFAW+fcZqBt3rSIiIjIORNcGhsxs0XAorzP+4A2pbFdERERkZLQk4xFRETEcxRwRERExHMUcERERMRzFHBERETEcxRwRERExHMUcERERMRzFHBERETEcxRwRERExHMUcERERMRzFHBERETEcxRwRERExHMUcERERMRzFHBERETEcxRwRERExHMUcERERMRzFHBERETEcxRwRERExHMUcERERMRzFHBERETEcxRwRERExHMUcERERMRzFHBERETEcxRwRERExHMUcERERMRzFHBERETEcxRwRERExHMUcERERMRzFHBERETEcxRwRERExHNKHHCc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BAcHExISQk5ODj/88ANBQUHk5uYyevRonnzyyfPUmrJz4sQJHn30UT7++GO++uorpk6dyldffVVgvZtuuon09HTS09P585//DMDUqVPp1asXy5YtY8SIEQD861//IiEhwd837lxQwBER8bAtW7Zw8o9eWL16NceOHaNmzZrUr1+f5cuX4/P5MDNSU1OJiIjIV9Yr/ZROl5mZSb169fzT4eHhBZ6v9Nhjj/H1118TFhZGdHQ0Y8aMISgoiPvuu49PPvmE9u3b89xzz/G3v/2NBx54gEsvvfRcN6PMFScInkl5CYIKOCIiF7Du3btz/fXXs3HjRsLDw3nrrbfy9VOaPn06UVFRxMXF8eijj/KPf/wD5xwtW7aka9euJCQkEB0dzY8//kjfvn392/VqP6VTYe907idX+T755BPi4uLIysoiPT2dxx57jEOHDlG1alVmz55NWloaCQkJfPTRR3Tp0oXf/va3dO3alWXLlp2rZpS54gRBKPw5VOUmCBbnd6yyfqkPTvlQZk3RMbqoziUdo+LxUFPKTFn8ky9dutSSkpL80y+99JK99NJL+dbp0KGDff755/7pW265xVasWJFvnccff9z+f3v3H2RVed9x/P3BVcCfSUMyTUWrNEgJ8kP5UQImEhE1NkWUBjU/ygSZhKSkIaM1ozsaZXAmNimaGVIaqoBWCyWoNFESpBhlDCoiCkqFYIMDqwZiSAgWAcFP/3iei2eXXfaC3P1x9/ua2dm9zznP+fHdc8/9nuc59zyPP/64Z82a5ZkzZ3rHjh0eMWLE0dnxw1SJY2nBggW+5pprDry+9957PXny5HrzHOo5VCXbt2/3qFGjvHPnTk+cONFjx471ihUr3uf+xj04IYQQQj2DBw9m48aNbNq0ib179zJ//nxGjx5db57TTz+dZcuWAbB161Y2bNhAjx49DkzfuHEjr7/+Oueffz67du2iU6dOSGL37t0tui+V1L17d7Zs2XLgdV1d3UH3zxzqOVQlU6dOpba2lnnz5jFw4EBmz57NjTfeWPkdILqoQgihusSN2IdUU1PDjBkzuPjii+nduzfjxo2jT58+9br1brrpJlasWEHfvn0ZOXIkt99+e71BW2tra5k2bRqQugjnzp3L0KFDue6661plnyqhnESwqedQlbR2IqjSxrWmQYMGedWqVRVbfsUGaq6yEaCPdHea3ZWK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\n", "text/plain": [ "
" ] @@ -38,29 +41,88 @@ } ], "source": [ - "A = memoire\n", - "numerical_indices = [10, 20, 30, 40, 50, 60, 70]\n", + "memoire_A = used_page\n", + "memoire_B = miss_rate\n", + "\n", + "numerical_indices = np.array([10, 20, 30, 40, 50, 60, 70])\n", + "bar_width = 2 # Largeur des barres\n", + "spacing = 1\n", "\n", "# Les étiquettes correspondant aux indices\n", "labels = [\"4Ko\", \"8Ko\", \"16Ko\", \"32Ko\", \"64Ko\", \"128Ko\", \"256Ko\"]\n", "\n", "plt.figure(figsize=(8, 6))\n", "\n", - "plt.bar(numerical_indices, memoire, color='blue', width=4) # Largeur des bandes ajustée à 5\n", + "# Première série de barres pour le tableau A (en bleu)\n", + "plt.bar(numerical_indices - bar_width / 2 - spacing / 2, memoire_A, color='blue', width=bar_width, label='Taux de page utilisé')\n", + "\n", + "# Deuxième série de barres pour le tableau B (en rouge)\n", + "plt.bar(numerical_indices + bar_width / 2 + spacing / 2, memoire_B, color='red', width=bar_width, label='Taux de miss')\n", + "\n", "plt.xlabel('Taille de page') # Nommer l'axe des x\n", - "plt.ylabel('Taux de page utilisé (en %)') # Nommer l'axe des y\n", - "#plt.title('Histogramme de A en fonction de l\\'indice') # Titre du graphique\n", + "#plt.ylabel('Taux de page utilisé (en %)') # Nommer l'axe des y\n", "plt.xticks(numerical_indices, labels) # Utiliser les étiquettes pour l'axe x\n", "\n", "for i in range(len(numerical_indices)):\n", - " plt.text(numerical_indices[i], A[i], str(A[i])+'%', ha='center', va='bottom')\n", + " plt.text(numerical_indices[i] - bar_width / 2 - spacing / 2, memoire_A[i], str(memoire_A[i])+'%', ha='center', va='bottom')\n", + " plt.text(numerical_indices[i] + bar_width / 2 + spacing, memoire_B[i], str(memoire_B[i])+'%', ha='center', va='bottom')\n", "\n", "plt.ylim(0, 100)\n", "plt.yticks(range(0, 101, 10))\n", "\n", + "plt.legend() # Afficher la légende\n", + "\n", + "plt.tight_layout()\n", + "\n", + "plt.savefig('2mm-a.svg', format='svg')\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Reuse distance\n", + "A = reuse_distance\n", + "\n", + "numerical_indices = [10, 20, 30, 40, 50, 60, 70]\n", + "\n", + "# Les étiquettes correspondant aux indices\n", + "labels = [\"4Ko\", \"8Ko\", \"16Ko\", \"32Ko\", \"64Ko\", \"128Ko\", \"256Ko\"]\n", + "\n", + "plt.figure(figsize=(8, 6))\n", + "\n", + "plt.bar(numerical_indices, A, color='blue', width=3) # Largeur des bandes ajustée à 3\n", + "plt.xlabel('Taille de page') # Nommer l'axe des x\n", + "plt.ylabel('Reuse distance') # Nommer l'axe des y\n", + "#plt.title('Histogramme de A en fonction de l\\'indice') # Titre du graphique\n", + "plt.xticks(numerical_indices, labels) # Utiliser les étiquettes pour l'axe x\n", + "\n", + "for i in range(len(numerical_indices)):\n", + " plt.text(numerical_indices[i], A[i], str(A[i]), ha='center', va='bottom')\n", + "\n", + "plt.ylim(0, 25)\n", + "plt.yticks(range(0, 26, 5))\n", + "\n", "plt.tight_layout()\n", "\n", - "plt.savefig('2mm-taux-de-pages.svg', format='svg')\n", + "plt.savefig('2mm-b.svg', format='svg')\n", "\n", "plt.show()" ] diff --git a/module3/exo1/histogramme.svg b/module3/exo1/histogramme.svg new file mode 100644 index 0000000..b342e80 --- /dev/null +++ b/module3/exo1/histogramme.svg @@ -0,0 +1,1335 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- 2.18.1