X-Git-Url: https://git.njae.me.uk/?p=advent-of-code-20.git;a=blobdiff_plain;f=profiling%2Fprofiling.ipynb;fp=profiling%2Fprofiling.ipynb;h=d70223f3fc0c34b5380014aff9383ba1633ace4b;hp=0000000000000000000000000000000000000000;hb=bb87fe8d48a7debc85dcbff2c08a7d8267427a77;hpb=6cf726976e228ca8cf2aa4e2b9458add2cc62416
diff --git a/profiling/profiling.ipynb b/profiling/profiling.ipynb
new file mode 100644
index 0000000..d70223f
--- /dev/null
+++ b/profiling/profiling.ipynb
@@ -0,0 +1,1971 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "Collapsed": "false"
+ },
+ "outputs": [],
+ "source": [
+ "import glob\n",
+ "import json\n",
+ "import pandas as pd\n",
+ "import numpy as np\n",
+ "\n",
+ "import matplotlib.pyplot as plt\n",
+ "%matplotlib inline"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "Collapsed": "false"
+ },
+ "outputs": [],
+ "source": [
+ "! for i in {01..25}; do stack build --executable-profiling --ghc-options=\"-O2 -threaded -fprof-auto -rtsopts\" advent${i} ; stack exec --profile -- advent${i} +RTS -pj ; done\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "Collapsed": "false"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "25"
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "len(glob.glob('*prof'))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "Collapsed": "false",
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[{'program': 'advent01',\n",
+ " 'total_time': 0.48,\n",
+ " 'total_alloc': 107029176,\n",
+ " 'total_ticks': 1644,\n",
+ " 'initial_capabilities': 12},\n",
+ " {'program': 'advent16',\n",
+ " 'total_time': 0.15,\n",
+ " 'total_alloc': 17242880,\n",
+ " 'total_ticks': 528,\n",
+ " 'initial_capabilities': 12},\n",
+ " {'program': 'advent23',\n",
+ " 'total_time': 72.61,\n",
+ " 'total_alloc': 10263690000,\n",
+ " 'total_ticks': 247608,\n",
+ " 'initial_capabilities': 12},\n",
+ " {'program': 'advent15loop',\n",
+ " 'total_time': 42.69,\n",
+ " 'total_alloc': 8838275776,\n",
+ " 'total_ticks': 145584,\n",
+ " 'initial_capabilities': 12},\n",
+ " {'program': 'advent24',\n",
+ " 'total_time': 26.45,\n",
+ " 'total_alloc': 4352105528,\n",
+ " 'total_ticks': 90180,\n",
+ " 'initial_capabilities': 12},\n",
+ " {'program': 'advent21',\n",
+ " 'total_time': 0.15,\n",
+ " 'total_alloc': 9561880,\n",
+ " 'total_ticks': 528,\n",
+ " 'initial_capabilities': 12},\n",
+ " {'program': 'advent19',\n",
+ " 'total_time': 0.24,\n",
+ " 'total_alloc': 44456496,\n",
+ " 'total_ticks': 816,\n",
+ " 'initial_capabilities': 12},\n",
+ " {'program': 'advent08',\n",
+ " 'total_time': 0.4,\n",
+ " 'total_alloc': 74894192,\n",
+ " 'total_ticks': 1356,\n",
+ " 'initial_capabilities': 12},\n",
+ " {'program': 'advent12',\n",
+ " 'total_time': 0.03,\n",
+ " 'total_alloc': 2206400,\n",
+ " 'total_ticks': 108,\n",
+ " 'initial_capabilities': 12},\n",
+ " {'program': 'advent20',\n",
+ " 'total_time': 34.74,\n",
+ " 'total_alloc': 3860804096,\n",
+ " 'total_ticks': 118476,\n",
+ " 'initial_capabilities': 12},\n",
+ " {'program': 'advent04',\n",
+ " 'total_time': 0.44,\n",
+ " 'total_alloc': 60820368,\n",
+ " 'total_ticks': 1512,\n",
+ " 'initial_capabilities': 12},\n",
+ " {'program': 'advent09',\n",
+ " 'total_time': 3.5,\n",
+ " 'total_alloc': 793279616,\n",
+ " 'total_ticks': 11928,\n",
+ " 'initial_capabilities': 12},\n",
+ " {'program': 'advent10',\n",
+ " 'total_time': 0.01,\n",
+ " 'total_alloc': 924456,\n",
+ " 'total_ticks': 36,\n",
+ " 'initial_capabilities': 12},\n",
+ " {'program': 'advent13',\n",
+ " 'total_time': 0.01,\n",
+ " 'total_alloc': 542152,\n",
+ " 'total_ticks': 36,\n",
+ " 'initial_capabilities': 12},\n",
+ " {'program': 'advent02',\n",
+ " 'total_time': 0.26,\n",
+ " 'total_alloc': 35370072,\n",
+ " 'total_ticks': 876,\n",
+ " 'initial_capabilities': 12},\n",
+ " {'program': 'advent06',\n",
+ " 'total_time': 0.11,\n",
+ " 'total_alloc': 11624856,\n",
+ " 'total_ticks': 372,\n",
+ " 'initial_capabilities': 12},\n",
+ " {'program': 'advent15',\n",
+ " 'total_time': 43.83,\n",
+ " 'total_alloc': 6662932672,\n",
+ " 'total_ticks': 149460,\n",
+ " 'initial_capabilities': 12},\n",
+ " {'program': 'advent17',\n",
+ " 'total_time': 21.33,\n",
+ " 'total_alloc': 4808712520,\n",
+ " 'total_ticks': 72744,\n",
+ " 'initial_capabilities': 12},\n",
+ " {'program': 'advent14',\n",
+ " 'total_time': 1.66,\n",
+ " 'total_alloc': 259113488,\n",
+ " 'total_ticks': 5676,\n",
+ " 'initial_capabilities': 12},\n",
+ " {'program': 'advent18',\n",
+ " 'total_time': 0.51,\n",
+ " 'total_alloc': 21509984,\n",
+ " 'total_ticks': 1728,\n",
+ " 'initial_capabilities': 12},\n",
+ " {'program': 'advent25',\n",
+ " 'total_time': 0.35,\n",
+ " 'total_alloc': 39231576,\n",
+ " 'total_ticks': 1200,\n",
+ " 'initial_capabilities': 12},\n",
+ " {'program': 'advent11',\n",
+ " 'total_time': 112.58,\n",
+ " 'total_alloc': 35282262592,\n",
+ " 'total_ticks': 383916,\n",
+ " 'initial_capabilities': 12},\n",
+ " {'program': 'advent07',\n",
+ " 'total_time': 0.33,\n",
+ " 'total_alloc': 21605440,\n",
+ " 'total_ticks': 1128,\n",
+ " 'initial_capabilities': 12},\n",
+ " {'program': 'advent03',\n",
+ " 'total_time': 0.06,\n",
+ " 'total_alloc': 4017640,\n",
+ " 'total_ticks': 192,\n",
+ " 'initial_capabilities': 12},\n",
+ " {'program': 'advent22',\n",
+ " 'total_time': 22.64,\n",
+ " 'total_alloc': 3242847728,\n",
+ " 'total_ticks': 77208,\n",
+ " 'initial_capabilities': 12},\n",
+ " {'program': 'advent05',\n",
+ " 'total_time': 0.09,\n",
+ " 'total_alloc': 27810256,\n",
+ " 'total_ticks': 312,\n",
+ " 'initial_capabilities': 12}]"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "profs = []\n",
+ "for fn in glob.glob('*prof'):\n",
+ " with open(fn) as f:\n",
+ " j = json.load(f)\n",
+ " prof = {}\n",
+ " for n in 'program total_time total_alloc total_ticks initial_capabilities'.split():\n",
+ " prof[n] = j[n]\n",
+ " profs.append(prof)\n",
+ "profs"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 80,
+ "metadata": {
+ "Collapsed": "false"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " total_time | \n",
+ " total_alloc | \n",
+ " total_ticks | \n",
+ " initial_capabilities | \n",
+ "
\n",
+ " \n",
+ " program | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " advent01 | \n",
+ " 0.48 | \n",
+ " 107029176 | \n",
+ " 1644 | \n",
+ " 12 | \n",
+ "
\n",
+ " \n",
+ " advent02 | \n",
+ " 0.26 | \n",
+ " 35370072 | \n",
+ " 876 | \n",
+ " 12 | \n",
+ "
\n",
+ " \n",
+ " advent03 | \n",
+ " 0.06 | \n",
+ " 4017640 | \n",
+ " 192 | \n",
+ " 12 | \n",
+ "
\n",
+ " \n",
+ " advent04 | \n",
+ " 0.44 | \n",
+ " 60820368 | \n",
+ " 1512 | \n",
+ " 12 | \n",
+ "
\n",
+ " \n",
+ " advent05 | \n",
+ " 0.09 | \n",
+ " 27810256 | \n",
+ " 312 | \n",
+ " 12 | \n",
+ "
\n",
+ " \n",
+ " advent06 | \n",
+ " 0.11 | \n",
+ " 11624856 | \n",
+ " 372 | \n",
+ " 12 | \n",
+ "
\n",
+ " \n",
+ " advent07 | \n",
+ " 0.33 | \n",
+ " 21605440 | \n",
+ " 1128 | \n",
+ " 12 | \n",
+ "
\n",
+ " \n",
+ " advent08 | \n",
+ " 0.40 | \n",
+ " 74894192 | \n",
+ " 1356 | \n",
+ " 12 | \n",
+ "
\n",
+ " \n",
+ " advent09 | \n",
+ " 3.50 | \n",
+ " 793279616 | \n",
+ " 11928 | \n",
+ " 12 | \n",
+ "
\n",
+ " \n",
+ " advent10 | \n",
+ " 0.01 | \n",
+ " 924456 | \n",
+ " 36 | \n",
+ " 12 | \n",
+ "
\n",
+ " \n",
+ " advent11 | \n",
+ " 112.58 | \n",
+ " 35282262592 | \n",
+ " 383916 | \n",
+ " 12 | \n",
+ "
\n",
+ " \n",
+ " advent12 | \n",
+ " 0.03 | \n",
+ " 2206400 | \n",
+ " 108 | \n",
+ " 12 | \n",
+ "
\n",
+ " \n",
+ " advent13 | \n",
+ " 0.01 | \n",
+ " 542152 | \n",
+ " 36 | \n",
+ " 12 | \n",
+ "
\n",
+ " \n",
+ " advent14 | \n",
+ " 1.66 | \n",
+ " 259113488 | \n",
+ " 5676 | \n",
+ " 12 | \n",
+ "
\n",
+ " \n",
+ " advent15 | \n",
+ " 43.83 | \n",
+ " 6662932672 | \n",
+ " 149460 | \n",
+ " 12 | \n",
+ "
\n",
+ " \n",
+ " advent15loop | \n",
+ " 42.69 | \n",
+ " 8838275776 | \n",
+ " 145584 | \n",
+ " 12 | \n",
+ "
\n",
+ " \n",
+ " advent16 | \n",
+ " 0.15 | \n",
+ " 17242880 | \n",
+ " 528 | \n",
+ " 12 | \n",
+ "
\n",
+ " \n",
+ " advent17 | \n",
+ " 21.33 | \n",
+ " 4808712520 | \n",
+ " 72744 | \n",
+ " 12 | \n",
+ "
\n",
+ " \n",
+ " advent18 | \n",
+ " 0.51 | \n",
+ " 21509984 | \n",
+ " 1728 | \n",
+ " 12 | \n",
+ "
\n",
+ " \n",
+ " advent19 | \n",
+ " 0.24 | \n",
+ " 44456496 | \n",
+ " 816 | \n",
+ " 12 | \n",
+ "
\n",
+ " \n",
+ " advent20 | \n",
+ " 34.74 | \n",
+ " 3860804096 | \n",
+ " 118476 | \n",
+ " 12 | \n",
+ "
\n",
+ " \n",
+ " advent21 | \n",
+ " 0.15 | \n",
+ " 9561880 | \n",
+ " 528 | \n",
+ " 12 | \n",
+ "
\n",
+ " \n",
+ " advent22 | \n",
+ " 22.64 | \n",
+ " 3242847728 | \n",
+ " 77208 | \n",
+ " 12 | \n",
+ "
\n",
+ " \n",
+ " advent23 | \n",
+ " 72.61 | \n",
+ " 10263690000 | \n",
+ " 247608 | \n",
+ " 12 | \n",
+ "
\n",
+ " \n",
+ " advent24 | \n",
+ " 26.45 | \n",
+ " 4352105528 | \n",
+ " 90180 | \n",
+ " 12 | \n",
+ "
\n",
+ " \n",
+ " advent25 | \n",
+ " 0.35 | \n",
+ " 39231576 | \n",
+ " 1200 | \n",
+ " 12 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " total_time total_alloc total_ticks initial_capabilities\n",
+ "program \n",
+ "advent01 0.48 107029176 1644 12\n",
+ "advent02 0.26 35370072 876 12\n",
+ "advent03 0.06 4017640 192 12\n",
+ "advent04 0.44 60820368 1512 12\n",
+ "advent05 0.09 27810256 312 12\n",
+ "advent06 0.11 11624856 372 12\n",
+ "advent07 0.33 21605440 1128 12\n",
+ "advent08 0.40 74894192 1356 12\n",
+ "advent09 3.50 793279616 11928 12\n",
+ "advent10 0.01 924456 36 12\n",
+ "advent11 112.58 35282262592 383916 12\n",
+ "advent12 0.03 2206400 108 12\n",
+ "advent13 0.01 542152 36 12\n",
+ "advent14 1.66 259113488 5676 12\n",
+ "advent15 43.83 6662932672 149460 12\n",
+ "advent15loop 42.69 8838275776 145584 12\n",
+ "advent16 0.15 17242880 528 12\n",
+ "advent17 21.33 4808712520 72744 12\n",
+ "advent18 0.51 21509984 1728 12\n",
+ "advent19 0.24 44456496 816 12\n",
+ "advent20 34.74 3860804096 118476 12\n",
+ "advent21 0.15 9561880 528 12\n",
+ "advent22 22.64 3242847728 77208 12\n",
+ "advent23 72.61 10263690000 247608 12\n",
+ "advent24 26.45 4352105528 90180 12\n",
+ "advent25 0.35 39231576 1200 12"
+ ]
+ },
+ "execution_count": 80,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "performance = pd.DataFrame(profs).set_index('program').sort_index()\n",
+ "performance"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 81,
+ "metadata": {
+ "Collapsed": "false"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 81,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "performance.total_time.plot.bar()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 82,
+ "metadata": {
+ "Collapsed": "false"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 82,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "performance.total_time.plot.bar(logy=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 83,
+ "metadata": {
+ "Collapsed": "false"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 83,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "performance.total_alloc.plot.bar()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 84,
+ "metadata": {
+ "Collapsed": "false"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 84,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "performance.total_alloc.plot.bar(logy=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 85,
+ "metadata": {
+ "Collapsed": "false"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 85,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAFECAYAAAAkzoUKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3dfbRU5Xn38e/PI4gvQCwSTEACWjUaRDRHfNeYRMUkamLaKKaJWvqwrLrMsq0r2PoEk9iUJm1sGjSWJoqmEfEtKbGkKjGoKG1AcxAQjUQhHskTERU1iopezx97HxiOM4czZ87M7D3791lrL2bu2de+r3nhOvfce8/eigjMzKz17dDsBMzMrDFc8M3MCsIF38ysIFzwzcwKwgXfzKwgXPDNzArCBd/MrCBc8M3MCqJuBV/S3pJ+IOm2ntrMzKwxVM0vbSVdB3wKeC4ixpW0TwK+A7QB34+IGSWP3RYRf9JtO+9qK2ePPfaIMWPG9Do/M7Oie/jhh5+PiOHlHtuxym3NBmYCN3Y1SGoDrgZOBDqBJZLmRcRjfUt3qzFjxrB06dJaN2NmVhiS1lZ6rKopnYi4H3ihW/NEYHVEPBURbwI3A6dXnWVK0lRJSyUtXb9+fV83Y2Zm3fTHHP5I4JmS+53ASEnDJF0LHCLpMoBybd1FxKyIaI+I9uHDy34rMTOzPqh2SqcclWmLiNgAnN+t8V1tZmbWGP1R8DuBvUrujwLW9cN2y3rrrbfo7Oxk06ZN9eqikAYNGsSoUaMYMGBAs1Mxszrpj4K/BNhX0ljgWeAs4Ox+2G5ZnZ2dDB48mDFjxiCV+3Jh1YoINmzYQGdnJ2PHjm12OmZWJ1XN4UuaAywG9pfUKWlKRGwGLgLuAlYBt0TEyv5PNbFp0yaGDRvmYt+PJDFs2DB/azJrcVWN8CNicoX2+cD8fsmoF1zs+59fU7PW51MrmJkVRH/M4TfVmGn/1a/bWzPjkz0+/tJLL3HTTTdxwQUXVN7GmjU89NBDnH12z7sy1qxZw6c+9SlWrFhR9vGOjg7WrVvHJz7xCQDmzZvHY489xrRp07bzLArgiqEltzc2Lw+zHPEIv0ovvfQS11xzTY/rrFmzhptuuqnmvjo6Opg/f+tM2WmnneZib2Z9lvsRfqNNmzaN3/zmN0yYMIETTzwRgJ/97GdI4vLLL+fMM89k2rRprFq1igkTJnDOOefwmc98hi984Qv84Q9/AGDmzJkcddRRPfbz5ptv8pWvfIXXX3+dRYsWcdlll/H666+zdOlSZs6cybnnnsvOO+/M448/ztq1a7n++uu54YYbWLx4MYcffjizZ88G4O6772b69Om88cYb7LPPPlx//fXstttudX2NzCybPMKv0owZM9hnn33o6OjgiCOOoKOjg2XLlrFgwQIuvfRSfve73zFjxgyOPfZYOjo6uOSSS3jve9/LPffcwyOPPMLcuXO5+OKLt9vPwIED+drXvsaZZ55JR0cHZ5555rvWefHFF7n33nu56qqrOPXUU7nkkktYuXIly5cvp6Ojg+eff54rr7ySBQsW8Mgjj9De3s63v/3terwsZpYDHuHXYNGiRUyePJm2tjZGjBjB8ccfz5IlSxgyZMg267311ltcdNFFdHR00NbWxq9//et+6f/UU09FEgcddBAjRozgoIMOAuBDH/oQa9asobOzk8cee4yjjz4aSL41HHnkkf3St5nljwt+DXp7aumrrrqKESNGsGzZMt555x0GDRrUL/3vtNNOAOywww5bbnfd37x5M21tbZx44onMmTOnX/ozs3zzlE6VBg8ezCuvvALAcccdx9y5c3n77bdZv349999/PxMnTtxmHYCNGzfyvve9jx122IEf/vCHvP3221X31RdHHHEEDz74IKtXrwbgtdde67dvF2aWP7kf4W/vMMr+NmzYMI4++mjGjRvHKaecwvjx4zn44IORxDe/+U323HNPhg0bxo477sjBBx/MueeeywUXXMBnP/tZbr31Vk444QR23XXXXvV1wgknMGPGDCZMmMBll5U9uWiPhg8fzuzZs5k8eTJvvPEGAFdeeSX77bdf1dsys/yr6opXjdbe3h7dL4CyatUqDjjggCZl1Npy9dr6OHzLqtLPJjT88ynp4YhoL/dY7kf4ZoXU5KJi+eSCnwF33XUXX/7yl7dpGzt2LD/+8Y+blJGZtSIX/Aw4+eSTOfnkk5udhjWLR+vWID5Kx8ysIDzCN7PKvHO8pbjgm5k1W4P+sLrgm1k++dtH1fJf8Lvv8Kp5ez1/cBp5PvzexC1cuJB/+qd/4s4776xqG2bWCy22Q907bavUyPPhm5n1Jxf8KpWeD//SSy/l0ksvZdy4cRx00EHMnTt3yzoPPPAAEyZM4Kqr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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "performance[['total_time', 'total_alloc']].plot.bar(logy=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 86,
+ "metadata": {
+ "Collapsed": "false"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Elapsed time (s) | \n",
+ " Max memory | \n",
+ "
\n",
+ " \n",
+ " Program | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " advent01 | \n",
+ " 0.39 | \n",
+ " 72440 | \n",
+ "
\n",
+ " \n",
+ " advent02 | \n",
+ " 0.41 | \n",
+ " 72440 | \n",
+ "
\n",
+ " \n",
+ " advent03 | \n",
+ " 0.37 | \n",
+ " 72504 | \n",
+ "
\n",
+ " \n",
+ " advent04 | \n",
+ " 0.43 | \n",
+ " 72504 | \n",
+ "
\n",
+ " \n",
+ " advent05 | \n",
+ " 0.43 | \n",
+ " 72440 | \n",
+ "
\n",
+ " \n",
+ " advent06 | \n",
+ " 0.41 | \n",
+ " 72504 | \n",
+ "
\n",
+ " \n",
+ " advent07 | \n",
+ " 0.39 | \n",
+ " 72444 | \n",
+ "
\n",
+ " \n",
+ " advent08 | \n",
+ " 0.44 | \n",
+ " 72508 | \n",
+ "
\n",
+ " \n",
+ " advent09 | \n",
+ " 0.66 | \n",
+ " 72508 | \n",
+ "
\n",
+ " \n",
+ " advent10 | \n",
+ " 0.36 | \n",
+ " 72444 | \n",
+ "
\n",
+ " \n",
+ " advent11 | \n",
+ " 16.75 | \n",
+ " 72504 | \n",
+ "
\n",
+ " \n",
+ " advent12 | \n",
+ " 0.38 | \n",
+ " 72508 | \n",
+ "
\n",
+ " \n",
+ " advent13 | \n",
+ " 0.36 | \n",
+ " 72436 | \n",
+ "
\n",
+ " \n",
+ " advent14 | \n",
+ " 0.61 | \n",
+ " 72508 | \n",
+ "
\n",
+ " \n",
+ " advent15 | \n",
+ " 2.15 | \n",
+ " 240372 | \n",
+ "
\n",
+ " \n",
+ " advent15loop | \n",
+ " 1.88 | \n",
+ " 240444 | \n",
+ "
\n",
+ " \n",
+ " advent16 | \n",
+ " 0.38 | \n",
+ " 72444 | \n",
+ "
\n",
+ " \n",
+ " advent17 | \n",
+ " 1.77 | \n",
+ " 72444 | \n",
+ "
\n",
+ " \n",
+ " advent18 | \n",
+ " 0.39 | \n",
+ " 72444 | \n",
+ "
\n",
+ " \n",
+ " advent19 | \n",
+ " 0.46 | \n",
+ " 72504 | \n",
+ "
\n",
+ " \n",
+ " advent20 | \n",
+ " 4.12 | \n",
+ " 72436 | \n",
+ "
\n",
+ " \n",
+ " advent21 | \n",
+ " 0.39 | \n",
+ " 72508 | \n",
+ "
\n",
+ " \n",
+ " advent22 | \n",
+ " 2.02 | \n",
+ " 72500 | \n",
+ "
\n",
+ " \n",
+ " advent23 | \n",
+ " 1.91 | \n",
+ " 95500 | \n",
+ "
\n",
+ " \n",
+ " advent24 | \n",
+ " 3.48 | \n",
+ " 72504 | \n",
+ "
\n",
+ " \n",
+ " advent25 | \n",
+ " 0.41 | \n",
+ " 72504 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Elapsed time (s) Max memory\n",
+ "Program \n",
+ "advent01 0.39 72440\n",
+ "advent02 0.41 72440\n",
+ "advent03 0.37 72504\n",
+ "advent04 0.43 72504\n",
+ "advent05 0.43 72440\n",
+ "advent06 0.41 72504\n",
+ "advent07 0.39 72444\n",
+ "advent08 0.44 72508\n",
+ "advent09 0.66 72508\n",
+ "advent10 0.36 72444\n",
+ "advent11 16.75 72504\n",
+ "advent12 0.38 72508\n",
+ "advent13 0.36 72436\n",
+ "advent14 0.61 72508\n",
+ "advent15 2.15 240372\n",
+ "advent15loop 1.88 240444\n",
+ "advent16 0.38 72444\n",
+ "advent17 1.77 72444\n",
+ "advent18 0.39 72444\n",
+ "advent19 0.46 72504\n",
+ "advent20 4.12 72436\n",
+ "advent21 0.39 72508\n",
+ "advent22 2.02 72500\n",
+ "advent23 1.91 95500\n",
+ "advent24 3.48 72504\n",
+ "advent25 0.41 72504"
+ ]
+ },
+ "execution_count": 86,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "times = pd.read_csv('time-results.csv').set_index('Program').sort_index()\n",
+ "times"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 87,
+ "metadata": {
+ "Collapsed": "false"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Elapsed time (s) | \n",
+ " Max memory | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " count | \n",
+ " 26.000000 | \n",
+ " 26.000000 | \n",
+ "
\n",
+ " \n",
+ " mean | \n",
+ " 1.605769 | \n",
+ " 86280.615385 | \n",
+ "
\n",
+ " \n",
+ " std | \n",
+ " 3.255795 | \n",
+ " 45597.232922 | \n",
+ "
\n",
+ " \n",
+ " min | \n",
+ " 0.360000 | \n",
+ " 72436.000000 | \n",
+ "
\n",
+ " \n",
+ " 25% | \n",
+ " 0.390000 | \n",
+ " 72444.000000 | \n",
+ "
\n",
+ " \n",
+ " 50% | \n",
+ " 0.430000 | \n",
+ " 72504.000000 | \n",
+ "
\n",
+ " \n",
+ " 75% | \n",
+ " 1.852500 | \n",
+ " 72508.000000 | \n",
+ "
\n",
+ " \n",
+ " max | \n",
+ " 16.750000 | \n",
+ " 240444.000000 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Elapsed time (s) Max memory\n",
+ "count 26.000000 26.000000\n",
+ "mean 1.605769 86280.615385\n",
+ "std 3.255795 45597.232922\n",
+ "min 0.360000 72436.000000\n",
+ "25% 0.390000 72444.000000\n",
+ "50% 0.430000 72504.000000\n",
+ "75% 1.852500 72508.000000\n",
+ "max 16.750000 240444.000000"
+ ]
+ },
+ "execution_count": 87,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "times.describe()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 88,
+ "metadata": {
+ "Collapsed": "false"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " total_time | \n",
+ " total_alloc | \n",
+ " total_ticks | \n",
+ " initial_capabilities | \n",
+ " Elapsed time (s) | \n",
+ " Max memory | \n",
+ "
\n",
+ " \n",
+ " program | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " advent01 | \n",
+ " 0.48 | \n",
+ " 107029176 | \n",
+ " 1644 | \n",
+ " 12 | \n",
+ " 0.39 | \n",
+ " 72440 | \n",
+ "
\n",
+ " \n",
+ " advent02 | \n",
+ " 0.26 | \n",
+ " 35370072 | \n",
+ " 876 | \n",
+ " 12 | \n",
+ " 0.41 | \n",
+ " 72440 | \n",
+ "
\n",
+ " \n",
+ " advent03 | \n",
+ " 0.06 | \n",
+ " 4017640 | \n",
+ " 192 | \n",
+ " 12 | \n",
+ " 0.37 | \n",
+ " 72504 | \n",
+ "
\n",
+ " \n",
+ " advent04 | \n",
+ " 0.44 | \n",
+ " 60820368 | \n",
+ " 1512 | \n",
+ " 12 | \n",
+ " 0.43 | \n",
+ " 72504 | \n",
+ "
\n",
+ " \n",
+ " advent05 | \n",
+ " 0.09 | \n",
+ " 27810256 | \n",
+ " 312 | \n",
+ " 12 | \n",
+ " 0.43 | \n",
+ " 72440 | \n",
+ "
\n",
+ " \n",
+ " advent06 | \n",
+ " 0.11 | \n",
+ " 11624856 | \n",
+ " 372 | \n",
+ " 12 | \n",
+ " 0.41 | \n",
+ " 72504 | \n",
+ "
\n",
+ " \n",
+ " advent07 | \n",
+ " 0.33 | \n",
+ " 21605440 | \n",
+ " 1128 | \n",
+ " 12 | \n",
+ " 0.39 | \n",
+ " 72444 | \n",
+ "
\n",
+ " \n",
+ " advent08 | \n",
+ " 0.40 | \n",
+ " 74894192 | \n",
+ " 1356 | \n",
+ " 12 | \n",
+ " 0.44 | \n",
+ " 72508 | \n",
+ "
\n",
+ " \n",
+ " advent09 | \n",
+ " 3.50 | \n",
+ " 793279616 | \n",
+ " 11928 | \n",
+ " 12 | \n",
+ " 0.66 | \n",
+ " 72508 | \n",
+ "
\n",
+ " \n",
+ " advent10 | \n",
+ " 0.01 | \n",
+ " 924456 | \n",
+ " 36 | \n",
+ " 12 | \n",
+ " 0.36 | \n",
+ " 72444 | \n",
+ "
\n",
+ " \n",
+ " advent11 | \n",
+ " 112.58 | \n",
+ " 35282262592 | \n",
+ " 383916 | \n",
+ " 12 | \n",
+ " 16.75 | \n",
+ " 72504 | \n",
+ "
\n",
+ " \n",
+ " advent12 | \n",
+ " 0.03 | \n",
+ " 2206400 | \n",
+ " 108 | \n",
+ " 12 | \n",
+ " 0.38 | \n",
+ " 72508 | \n",
+ "
\n",
+ " \n",
+ " advent13 | \n",
+ " 0.01 | \n",
+ " 542152 | \n",
+ " 36 | \n",
+ " 12 | \n",
+ " 0.36 | \n",
+ " 72436 | \n",
+ "
\n",
+ " \n",
+ " advent14 | \n",
+ " 1.66 | \n",
+ " 259113488 | \n",
+ " 5676 | \n",
+ " 12 | \n",
+ " 0.61 | \n",
+ " 72508 | \n",
+ "
\n",
+ " \n",
+ " advent15 | \n",
+ " 43.83 | \n",
+ " 6662932672 | \n",
+ " 149460 | \n",
+ " 12 | \n",
+ " 2.15 | \n",
+ " 240372 | \n",
+ "
\n",
+ " \n",
+ " advent16 | \n",
+ " 0.15 | \n",
+ " 17242880 | \n",
+ " 528 | \n",
+ " 12 | \n",
+ " 0.38 | \n",
+ " 72444 | \n",
+ "
\n",
+ " \n",
+ " advent17 | \n",
+ " 21.33 | \n",
+ " 4808712520 | \n",
+ " 72744 | \n",
+ " 12 | \n",
+ " 1.77 | \n",
+ " 72444 | \n",
+ "
\n",
+ " \n",
+ " advent18 | \n",
+ " 0.51 | \n",
+ " 21509984 | \n",
+ " 1728 | \n",
+ " 12 | \n",
+ " 0.39 | \n",
+ " 72444 | \n",
+ "
\n",
+ " \n",
+ " advent19 | \n",
+ " 0.24 | \n",
+ " 44456496 | \n",
+ " 816 | \n",
+ " 12 | \n",
+ " 0.46 | \n",
+ " 72504 | \n",
+ "
\n",
+ " \n",
+ " advent20 | \n",
+ " 34.74 | \n",
+ " 3860804096 | \n",
+ " 118476 | \n",
+ " 12 | \n",
+ " 4.12 | \n",
+ " 72436 | \n",
+ "
\n",
+ " \n",
+ " advent21 | \n",
+ " 0.15 | \n",
+ " 9561880 | \n",
+ " 528 | \n",
+ " 12 | \n",
+ " 0.39 | \n",
+ " 72508 | \n",
+ "
\n",
+ " \n",
+ " advent22 | \n",
+ " 22.64 | \n",
+ " 3242847728 | \n",
+ " 77208 | \n",
+ " 12 | \n",
+ " 2.02 | \n",
+ " 72500 | \n",
+ "
\n",
+ " \n",
+ " advent23 | \n",
+ " 72.61 | \n",
+ " 10263690000 | \n",
+ " 247608 | \n",
+ " 12 | \n",
+ " 1.91 | \n",
+ " 95500 | \n",
+ "
\n",
+ " \n",
+ " advent24 | \n",
+ " 26.45 | \n",
+ " 4352105528 | \n",
+ " 90180 | \n",
+ " 12 | \n",
+ " 3.48 | \n",
+ " 72504 | \n",
+ "
\n",
+ " \n",
+ " advent25 | \n",
+ " 0.35 | \n",
+ " 39231576 | \n",
+ " 1200 | \n",
+ " 12 | \n",
+ " 0.41 | \n",
+ " 72504 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " total_time total_alloc total_ticks initial_capabilities \\\n",
+ "program \n",
+ "advent01 0.48 107029176 1644 12 \n",
+ "advent02 0.26 35370072 876 12 \n",
+ "advent03 0.06 4017640 192 12 \n",
+ "advent04 0.44 60820368 1512 12 \n",
+ "advent05 0.09 27810256 312 12 \n",
+ "advent06 0.11 11624856 372 12 \n",
+ "advent07 0.33 21605440 1128 12 \n",
+ "advent08 0.40 74894192 1356 12 \n",
+ "advent09 3.50 793279616 11928 12 \n",
+ "advent10 0.01 924456 36 12 \n",
+ "advent11 112.58 35282262592 383916 12 \n",
+ "advent12 0.03 2206400 108 12 \n",
+ "advent13 0.01 542152 36 12 \n",
+ "advent14 1.66 259113488 5676 12 \n",
+ "advent15 43.83 6662932672 149460 12 \n",
+ "advent16 0.15 17242880 528 12 \n",
+ "advent17 21.33 4808712520 72744 12 \n",
+ "advent18 0.51 21509984 1728 12 \n",
+ "advent19 0.24 44456496 816 12 \n",
+ "advent20 34.74 3860804096 118476 12 \n",
+ "advent21 0.15 9561880 528 12 \n",
+ "advent22 22.64 3242847728 77208 12 \n",
+ "advent23 72.61 10263690000 247608 12 \n",
+ "advent24 26.45 4352105528 90180 12 \n",
+ "advent25 0.35 39231576 1200 12 \n",
+ "\n",
+ " Elapsed time (s) Max memory \n",
+ "program \n",
+ "advent01 0.39 72440 \n",
+ "advent02 0.41 72440 \n",
+ "advent03 0.37 72504 \n",
+ "advent04 0.43 72504 \n",
+ "advent05 0.43 72440 \n",
+ "advent06 0.41 72504 \n",
+ "advent07 0.39 72444 \n",
+ "advent08 0.44 72508 \n",
+ "advent09 0.66 72508 \n",
+ "advent10 0.36 72444 \n",
+ "advent11 16.75 72504 \n",
+ "advent12 0.38 72508 \n",
+ "advent13 0.36 72436 \n",
+ "advent14 0.61 72508 \n",
+ "advent15 2.15 240372 \n",
+ "advent16 0.38 72444 \n",
+ "advent17 1.77 72444 \n",
+ "advent18 0.39 72444 \n",
+ "advent19 0.46 72504 \n",
+ "advent20 4.12 72436 \n",
+ "advent21 0.39 72508 \n",
+ "advent22 2.02 72500 \n",
+ "advent23 1.91 95500 \n",
+ "advent24 3.48 72504 \n",
+ "advent25 0.41 72504 "
+ ]
+ },
+ "execution_count": 88,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "performance = performance.merge(times, left_index=True, right_index=True)\n",
+ "performance.drop(index='advent15loop', inplace=True)\n",
+ "performance"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 89,
+ "metadata": {
+ "Collapsed": "false"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Index(['total_time', 'total_alloc', 'total_ticks', 'initial_capabilities',\n",
+ " 'Elapsed time (s)', 'Max memory'],\n",
+ " dtype='object')"
+ ]
+ },
+ "execution_count": 89,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "performance.columns"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 90,
+ "metadata": {
+ "Collapsed": "false"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 90,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "performance[['total_time', 'Elapsed time (s)']].plot.bar(logy=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 91,
+ "metadata": {
+ "Collapsed": "false"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " total_time | \n",
+ " total_alloc | \n",
+ " total_ticks | \n",
+ " initial_capabilities | \n",
+ " Elapsed time (s) | \n",
+ " Max memory | \n",
+ " elapsed_adj | \n",
+ "
\n",
+ " \n",
+ " program | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " advent01 | \n",
+ " 0.48 | \n",
+ " 107029176 | \n",
+ " 1644 | \n",
+ " 12 | \n",
+ " 0.39 | \n",
+ " 72440 | \n",
+ " 0.04 | \n",
+ "
\n",
+ " \n",
+ " advent02 | \n",
+ " 0.26 | \n",
+ " 35370072 | \n",
+ " 876 | \n",
+ " 12 | \n",
+ " 0.41 | \n",
+ " 72440 | \n",
+ " 0.06 | \n",
+ "
\n",
+ " \n",
+ " advent03 | \n",
+ " 0.06 | \n",
+ " 4017640 | \n",
+ " 192 | \n",
+ " 12 | \n",
+ " 0.37 | \n",
+ " 72504 | \n",
+ " 0.02 | \n",
+ "
\n",
+ " \n",
+ " advent04 | \n",
+ " 0.44 | \n",
+ " 60820368 | \n",
+ " 1512 | \n",
+ " 12 | \n",
+ " 0.43 | \n",
+ " 72504 | \n",
+ " 0.08 | \n",
+ "
\n",
+ " \n",
+ " advent05 | \n",
+ " 0.09 | \n",
+ " 27810256 | \n",
+ " 312 | \n",
+ " 12 | \n",
+ " 0.43 | \n",
+ " 72440 | \n",
+ " 0.08 | \n",
+ "
\n",
+ " \n",
+ " advent06 | \n",
+ " 0.11 | \n",
+ " 11624856 | \n",
+ " 372 | \n",
+ " 12 | \n",
+ " 0.41 | \n",
+ " 72504 | \n",
+ " 0.06 | \n",
+ "
\n",
+ " \n",
+ " advent07 | \n",
+ " 0.33 | \n",
+ " 21605440 | \n",
+ " 1128 | \n",
+ " 12 | \n",
+ " 0.39 | \n",
+ " 72444 | \n",
+ " 0.04 | \n",
+ "
\n",
+ " \n",
+ " advent08 | \n",
+ " 0.40 | \n",
+ " 74894192 | \n",
+ " 1356 | \n",
+ " 12 | \n",
+ " 0.44 | \n",
+ " 72508 | \n",
+ " 0.09 | \n",
+ "
\n",
+ " \n",
+ " advent09 | \n",
+ " 3.50 | \n",
+ " 793279616 | \n",
+ " 11928 | \n",
+ " 12 | \n",
+ " 0.66 | \n",
+ " 72508 | \n",
+ " 0.31 | \n",
+ "
\n",
+ " \n",
+ " advent10 | \n",
+ " 0.01 | \n",
+ " 924456 | \n",
+ " 36 | \n",
+ " 12 | \n",
+ " 0.36 | \n",
+ " 72444 | \n",
+ " 0.01 | \n",
+ "
\n",
+ " \n",
+ " advent11 | \n",
+ " 112.58 | \n",
+ " 35282262592 | \n",
+ " 383916 | \n",
+ " 12 | \n",
+ " 16.75 | \n",
+ " 72504 | \n",
+ " 16.40 | \n",
+ "
\n",
+ " \n",
+ " advent12 | \n",
+ " 0.03 | \n",
+ " 2206400 | \n",
+ " 108 | \n",
+ " 12 | \n",
+ " 0.38 | \n",
+ " 72508 | \n",
+ " 0.03 | \n",
+ "
\n",
+ " \n",
+ " advent13 | \n",
+ " 0.01 | \n",
+ " 542152 | \n",
+ " 36 | \n",
+ " 12 | \n",
+ " 0.36 | \n",
+ " 72436 | \n",
+ " 0.01 | \n",
+ "
\n",
+ " \n",
+ " advent14 | \n",
+ " 1.66 | \n",
+ " 259113488 | \n",
+ " 5676 | \n",
+ " 12 | \n",
+ " 0.61 | \n",
+ " 72508 | \n",
+ " 0.26 | \n",
+ "
\n",
+ " \n",
+ " advent15 | \n",
+ " 43.83 | \n",
+ " 6662932672 | \n",
+ " 149460 | \n",
+ " 12 | \n",
+ " 2.15 | \n",
+ " 240372 | \n",
+ " 1.80 | \n",
+ "
\n",
+ " \n",
+ " advent16 | \n",
+ " 0.15 | \n",
+ " 17242880 | \n",
+ " 528 | \n",
+ " 12 | \n",
+ " 0.38 | \n",
+ " 72444 | \n",
+ " 0.03 | \n",
+ "
\n",
+ " \n",
+ " advent17 | \n",
+ " 21.33 | \n",
+ " 4808712520 | \n",
+ " 72744 | \n",
+ " 12 | \n",
+ " 1.77 | \n",
+ " 72444 | \n",
+ " 1.42 | \n",
+ "
\n",
+ " \n",
+ " advent18 | \n",
+ " 0.51 | \n",
+ " 21509984 | \n",
+ " 1728 | \n",
+ " 12 | \n",
+ " 0.39 | \n",
+ " 72444 | \n",
+ " 0.04 | \n",
+ "
\n",
+ " \n",
+ " advent19 | \n",
+ " 0.24 | \n",
+ " 44456496 | \n",
+ " 816 | \n",
+ " 12 | \n",
+ " 0.46 | \n",
+ " 72504 | \n",
+ " 0.11 | \n",
+ "
\n",
+ " \n",
+ " advent20 | \n",
+ " 34.74 | \n",
+ " 3860804096 | \n",
+ " 118476 | \n",
+ " 12 | \n",
+ " 4.12 | \n",
+ " 72436 | \n",
+ " 3.77 | \n",
+ "
\n",
+ " \n",
+ " advent21 | \n",
+ " 0.15 | \n",
+ " 9561880 | \n",
+ " 528 | \n",
+ " 12 | \n",
+ " 0.39 | \n",
+ " 72508 | \n",
+ " 0.04 | \n",
+ "
\n",
+ " \n",
+ " advent22 | \n",
+ " 22.64 | \n",
+ " 3242847728 | \n",
+ " 77208 | \n",
+ " 12 | \n",
+ " 2.02 | \n",
+ " 72500 | \n",
+ " 1.67 | \n",
+ "
\n",
+ " \n",
+ " advent23 | \n",
+ " 72.61 | \n",
+ " 10263690000 | \n",
+ " 247608 | \n",
+ " 12 | \n",
+ " 1.91 | \n",
+ " 95500 | \n",
+ " 1.56 | \n",
+ "
\n",
+ " \n",
+ " advent24 | \n",
+ " 26.45 | \n",
+ " 4352105528 | \n",
+ " 90180 | \n",
+ " 12 | \n",
+ " 3.48 | \n",
+ " 72504 | \n",
+ " 3.13 | \n",
+ "
\n",
+ " \n",
+ " advent25 | \n",
+ " 0.35 | \n",
+ " 39231576 | \n",
+ " 1200 | \n",
+ " 12 | \n",
+ " 0.41 | \n",
+ " 72504 | \n",
+ " 0.06 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " total_time total_alloc total_ticks initial_capabilities \\\n",
+ "program \n",
+ "advent01 0.48 107029176 1644 12 \n",
+ "advent02 0.26 35370072 876 12 \n",
+ "advent03 0.06 4017640 192 12 \n",
+ "advent04 0.44 60820368 1512 12 \n",
+ "advent05 0.09 27810256 312 12 \n",
+ "advent06 0.11 11624856 372 12 \n",
+ "advent07 0.33 21605440 1128 12 \n",
+ "advent08 0.40 74894192 1356 12 \n",
+ "advent09 3.50 793279616 11928 12 \n",
+ "advent10 0.01 924456 36 12 \n",
+ "advent11 112.58 35282262592 383916 12 \n",
+ "advent12 0.03 2206400 108 12 \n",
+ "advent13 0.01 542152 36 12 \n",
+ "advent14 1.66 259113488 5676 12 \n",
+ "advent15 43.83 6662932672 149460 12 \n",
+ "advent16 0.15 17242880 528 12 \n",
+ "advent17 21.33 4808712520 72744 12 \n",
+ "advent18 0.51 21509984 1728 12 \n",
+ "advent19 0.24 44456496 816 12 \n",
+ "advent20 34.74 3860804096 118476 12 \n",
+ "advent21 0.15 9561880 528 12 \n",
+ "advent22 22.64 3242847728 77208 12 \n",
+ "advent23 72.61 10263690000 247608 12 \n",
+ "advent24 26.45 4352105528 90180 12 \n",
+ "advent25 0.35 39231576 1200 12 \n",
+ "\n",
+ " Elapsed time (s) Max memory elapsed_adj \n",
+ "program \n",
+ "advent01 0.39 72440 0.04 \n",
+ "advent02 0.41 72440 0.06 \n",
+ "advent03 0.37 72504 0.02 \n",
+ "advent04 0.43 72504 0.08 \n",
+ "advent05 0.43 72440 0.08 \n",
+ "advent06 0.41 72504 0.06 \n",
+ "advent07 0.39 72444 0.04 \n",
+ "advent08 0.44 72508 0.09 \n",
+ "advent09 0.66 72508 0.31 \n",
+ "advent10 0.36 72444 0.01 \n",
+ "advent11 16.75 72504 16.40 \n",
+ "advent12 0.38 72508 0.03 \n",
+ "advent13 0.36 72436 0.01 \n",
+ "advent14 0.61 72508 0.26 \n",
+ "advent15 2.15 240372 1.80 \n",
+ "advent16 0.38 72444 0.03 \n",
+ "advent17 1.77 72444 1.42 \n",
+ "advent18 0.39 72444 0.04 \n",
+ "advent19 0.46 72504 0.11 \n",
+ "advent20 4.12 72436 3.77 \n",
+ "advent21 0.39 72508 0.04 \n",
+ "advent22 2.02 72500 1.67 \n",
+ "advent23 1.91 95500 1.56 \n",
+ "advent24 3.48 72504 3.13 \n",
+ "advent25 0.41 72504 0.06 "
+ ]
+ },
+ "execution_count": 91,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "performance['elapsed_adj'] = performance['Elapsed time (s)'] - 0.35\n",
+ "performance"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 92,
+ "metadata": {
+ "Collapsed": "false"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 92,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAEsCAYAAADAaQg9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3de5gU9ZX/8fcBQeQiKiAmohkUr8QBcUBdSZTgNYqi7gYwuqKuBlnWxF82T3DXRDQaiUHdGDRmskGiEUWNRlC8oTE8KiYgjly9oKCMuIIooARU4Pz+qGJohu65dNd0V3V9Xs9TD91V9a1zpqY48+1vVVeZuyMiIuWvVakTEBGR4lDBFxFJCRV8EZGUUMEXEUkJFXwRkZRQwRcRSYldSp1AQ7p27eoVFRWlTkNEJDFeeeWVj9y9W7ZlsS74FRUVzJ07t9RpiIgkhpm9m2uZhnRERFJCBV9EJCVU8EVEUiLWY/jZfPnll9TW1rJp06ZSp5Iq7dq1o0ePHrRp06bUqYhInhJX8Gtra+nUqRMVFRWYWanTSQV3Z82aNdTW1tKzZ89SpyMieUrckM6mTZvo0qWLin0RmRldunTRpyqRhCtawTezoWb2OzN71MxOLnBbUaUlTaR9LpJ8BRV8M5tkZqvMbGG9+aea2RtmttTMxgK4+5/d/VJgJDCskLgiItJ8hY7hTwYmAndvm2FmrYHbgZOAWmCOmU1z98XhKleHyyNRMfbxqDYFwPLxpze4fO3atUyZMoXRo0fn3sby5bz00kucd955DcdavpwzzjiDhQsXZl1eU1PDypUr+fa3vw3AtGnTWLx4MWPHjm3kp0iPzN9/Y787kbQrqIfv7rOAj+vNHgAsdfd33P0L4H7gLAv8AnjC3ecVEreU1q5dyx133NHgOsuXL2fKlCkFx6qpqWHGjBl1788880wVexHJW0tcpbMvsCLjfS1wNPAfwIlAZzPr5e53ZmtsZpcBlwHsv//+LZBeYcaOHcvbb79N3759OemkkwB44oknMDOuvvpqhg0bxtixY1myZAl9+/blwgsv5Oyzz+aCCy5gw4YNAEycOJF/+qd/ajDOF198wU9/+lM2btzICy+8wFVXXcXGjRuZO3cuEydOZOTIkey22268/vrrvPvuu9x111384Q9/YPbs2Rx99NFMnjwZgKeffpprrrmGzz//nAMPPJC77rqLjh07tug+EpF4aomTttnO7rm73+buR7n7qFzFPlyx2t2r3L2qW7es9/8pqfHjx3PggQdSU1PDMcccQ01NDa+99hozZ87kRz/6ER988AHjx4/nG9/4BjU1NVx55ZXsvffePPPMM8ybN4+pU6dyxRVXNBqnbdu2XHfddQwbNoyamhqGDdv5tMcnn3zCc889x6233sqQIUO48sorWbRoEQsWLKCmpoaPPvqI66+/npkzZzJv3jyqqqq45ZZbWmK3iEgCtEQPvxbYL+N9D2BlczZgZkOAIb169Yoyr8i98MILjBgxgtatW9O9e3eOP/545syZw+67777Del9++SVjxoyhpqaG1q1b8+abb0YSf8iQIZgZRxxxBN27d+eII44AoHfv3ixfvpza2loWL17McccdBwSfGo499thIYotI8rREwZ8DHGRmPYH3geFAw2cv63H36cD0qqqqS1sgv8i4e5PWu/XWW+nevTuvvfYaW7dupV27dpHE33XXXQFo1apV3ett7zdv3kzr1q056aSTuO+++yKJJyLJVuhlmfcBs4FDzKzWzC5x983AGOApYAnwgLsvKjzVeOjUqROffvopAN/85jeZOnUqW7ZsYfXq1cyaNYsBAwbssA7AunXr+MpXvkKrVq2455572LJlS7Nj5eOYY47hxRdfZOnSpQD84x//iOzThYgkT0E9fHcfkWP+DGBGtmVN0ZwhnWJfitelSxeOO+44vv71r3PaaadRWVlJnz59MDNuuukm9tlnH7p06cIuu+xCnz59GDlyJKNHj+bcc8/lwQcfZNCgQXTo0KFJsQYNGsT48ePp27cvV111VbNz7datG5MnT2bEiBF8/vnnAFx//fUcfPDBzd6WiCSfNXVYohSqqqq8/gNQlixZwmGHHVaijNItjvte1+GL7MjMXnH3qmzLEnfzNBGROElSpyOWBT8pV+lE5amnnuLHP/7xDvN69uzJI488UqKMRKQcxbLgJ+UqnaiccsopnHLKKaVOQ0TKXOJujywiIvmJZcE3syFmVr1u3bpSpyIiUjZiWfDdfbq7X9a5c+dSpyIiUjZiWfBFRCR6sTxp2yzjIv4UMC6/YaSKigrmzp1L165do82nESeccAITJkygqirrZbdN8vzzzzNhwgQee+wx3XNfpIzFsuCn7bLMODnzzDM588wzS52GiLSAWA7pxH0M/49//CMDBgygb9++fO9739vp3jhDhw7lqKOOonfv3lRXV9fN79ixIz/84Q/p168fgwcPZvXq1QDcdtttHH744VRWVjJ8+HAANmzYwMUXX0z//v058sgjefTRRwHYuHEjw4cPp7KykmHDhrFx48YGc7388supqqqid+/eXHPNNXXzn3zySQ499FAGDhzIww8/XDd/8uTJjBkzprAdJCKxFMsefpwtWbKEqVOn8uKLL9KmTRtGjx7Nvffeu8M6kyZNYq+99mLjxo3079+fc889ly5durBhwwb69evHzTffzHXXXce1117LxIkTGT9+PMuWLWPXXXdl7dq1ANxwww1861vfYtKkSaxdu5YBAwZw4okn8tvf/pb27dszf/585s+fT79+/RrM94YbbmCvvfZiy5YtDB48mPnz53PwwQdz6aWX8txzz9GrV6+s99oXkfKjgt9Mzz77LK+88gr9+/cHgh733nvvvcM6t912W923ZFesWMFbb71Fly5daNWqVV1xPf/88znnnHMAqKys5Lvf/S5Dhw5l6NChQPCkqmnTpjFhwgQANm3axHvvvcesWbPqHqBSWVlJZWVlg/k+8MADVFdXs3nzZj744AMWL17M1q1b6dmzJwcddFBdLpmfRKT0kvR1fUkOFfxmcncuvPBCbrzxxh3mb3uk4PPPP8/MmTOZPXs27du354QTTmDTpk1Zt2UWPBzs8ccfZ9asWUybNo2f/exnLFq0CHfnT3/6E4ccckjOdo1ZtmwZEyZMYM6cOey5556MHDmyLpembkNEykcsx/Dj/MWrwYMH89BDD7Fq1SoAPv74Y95999265evWrWPPPfekffv2vP7667z88st1y7Zu3cpDDz0EwJQpUxg4cCBbt25lxYoVDBo0iJtuuom1a9fy2Wefccopp/DrX/+67iErr776KhDcg3/bENLChQuZP39+zlzXr19Phw4d6Ny5Mx9++CFPPPEEAIceeijLli3j7bffBtADUkRSIpY9/GbdSyfPyyjzdfjhh3P99ddz8skns3XrVtq0acPtt99et/zUU0/lzjvvpLKykkMOOYRjjjmmblmHDh1YtGgRRx11FJ07d657eMr555/PunXrcHeuvPJK9thjD37yk5/wgx/8gMrKStydiooKHnvsMS6//HIuuugiKisr6du3LwMGDMiZa58+fTjy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\n",
+ "text/plain": [
+ "