Created
June 19, 2020 04:08
-
-
Save caryan/4a2c94a62e9da5b18eaed62fb637fc4a to your computer and use it in GitHub Desktop.
Measuring Python function call overhead
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Code Generation" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# write out a series of nested functions\n", | |
"from string import ascii_lowercase\n", | |
"\n", | |
"code = \"\"\n", | |
"\n", | |
"max_depth = 10\n", | |
"for ct in range(max_depth):\n", | |
" code += \\\n", | |
"f\"\"\"\n", | |
"def {ascii_lowercase[ct]}():\n", | |
" return {29 if ct == 0 else ascii_lowercase[ct-1]+'()'}\n", | |
"\"\"\"\n", | |
"\n", | |
"code += \"\\n\\n\"\n", | |
"for ct in range(max_depth):\n", | |
" code += \\\n", | |
"f\"\"\"\n", | |
"def times2_{ascii_lowercase[ct]}(x):\n", | |
" return {'2*x' if ct == 0 else 'times2_'+ascii_lowercase[ct-1]+'(x)'}\n", | |
"\"\"\"\n", | |
"\n", | |
" \n", | |
"code += \"\\n\\n\"\n", | |
"code += \"class OneLiners():\"\n", | |
"\n", | |
"for ct in range(max_depth):\n", | |
" code += f\"\"\"\n", | |
" def {ascii_lowercase[ct]}(self):\n", | |
" return {29 if ct == 0 else 'self.'+ascii_lowercase[ct-1]+'()'}\n", | |
" \"\"\"\n", | |
"\n", | |
"for ct in range(max_depth):\n", | |
" code += f\"\"\"\n", | |
" def times2_{ascii_lowercase[ct]}(self, x):\n", | |
" return {'2*x' if ct == 0 else 'self.times2_'+ascii_lowercase[ct-1]+'(x)'}\n", | |
" \"\"\"\n", | |
"\n", | |
"# print(code)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"code = \"timing_results = {}\\n\"\n", | |
"\n", | |
"code += \"\\ntiming_results['Function No Arg'] = []\\n\"\n", | |
"for ct in range(max_depth):\n", | |
" code += \\\n", | |
"f\"\"\"\n", | |
"ti = %timeit -o -q {ascii_lowercase[ct]}()\n", | |
"timing_results['Function No Arg'].append(ti)\n", | |
"\"\"\"\n", | |
"\n", | |
"code += \"\\ntiming_results['Function 1 Arg'] = []\\n\"\n", | |
"for ct in range(max_depth):\n", | |
" code += \\\n", | |
"f\"\"\"\n", | |
"ti = %timeit -o -q times2_{ascii_lowercase[ct]}(29)\n", | |
"timing_results['Function 1 Arg'].append(ti)\n", | |
"\"\"\"\n", | |
"\n", | |
"code += \"ol = OneLiners()\"\n", | |
"code += \"\\ntiming_results['Class Method No Arg'] = []\\n\"\n", | |
"for ct in range(max_depth):\n", | |
" code += \\\n", | |
"f\"\"\"\n", | |
"ti = %timeit -o -q ol.{ascii_lowercase[ct]}()\n", | |
"timing_results['Class Method No Arg'].append(ti)\n", | |
"\"\"\"\n", | |
"\n", | |
"code += \"\\ntiming_results['Class Method 1 Arg'] = []\\n\"\n", | |
"for ct in range(max_depth):\n", | |
" code += \\\n", | |
"f\"\"\"\n", | |
"ti = %timeit -o -q ol.times2_{ascii_lowercase[ct]}(29)\n", | |
"timing_results['Class Method 1 Arg'].append(ti)\n", | |
"\"\"\"\n", | |
" \n", | |
"# print(code)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Define Chained Functions" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def a():\n", | |
" return 29\n", | |
"\n", | |
"def b():\n", | |
" return a()\n", | |
"\n", | |
"def c():\n", | |
" return b()\n", | |
"\n", | |
"def d():\n", | |
" return c()\n", | |
"\n", | |
"def e():\n", | |
" return d()\n", | |
"\n", | |
"def f():\n", | |
" return e()\n", | |
"\n", | |
"def g():\n", | |
" return f()\n", | |
"\n", | |
"def h():\n", | |
" return g()\n", | |
"\n", | |
"def i():\n", | |
" return h()\n", | |
"\n", | |
"def j():\n", | |
" return i()\n", | |
"\n", | |
"\n", | |
"def times2_a(x):\n", | |
" return 2*x\n", | |
"\n", | |
"def times2_b(x):\n", | |
" return times2_a(x)\n", | |
"\n", | |
"def times2_c(x):\n", | |
" return times2_b(x)\n", | |
"\n", | |
"def times2_d(x):\n", | |
" return times2_c(x)\n", | |
"\n", | |
"def times2_e(x):\n", | |
" return times2_d(x)\n", | |
"\n", | |
"def times2_f(x):\n", | |
" return times2_e(x)\n", | |
"\n", | |
"def times2_g(x):\n", | |
" return times2_f(x)\n", | |
"\n", | |
"def times2_h(x):\n", | |
" return times2_g(x)\n", | |
"\n", | |
"def times2_i(x):\n", | |
" return times2_h(x)\n", | |
"\n", | |
"def times2_j(x):\n", | |
" return times2_i(x)\n", | |
"\n", | |
"\n", | |
"class OneLiners():\n", | |
" def a(self):\n", | |
" return 29\n", | |
" \n", | |
" def b(self):\n", | |
" return self.a()\n", | |
" \n", | |
" def c(self):\n", | |
" return self.b()\n", | |
" \n", | |
" def d(self):\n", | |
" return self.c()\n", | |
" \n", | |
" def e(self):\n", | |
" return self.d()\n", | |
" \n", | |
" def f(self):\n", | |
" return self.e()\n", | |
" \n", | |
" def g(self):\n", | |
" return self.f()\n", | |
" \n", | |
" def h(self):\n", | |
" return self.g()\n", | |
" \n", | |
" def i(self):\n", | |
" return self.h()\n", | |
" \n", | |
" def j(self):\n", | |
" return self.i()\n", | |
" \n", | |
" def times2_a(self, x):\n", | |
" return 2*x\n", | |
" \n", | |
" def times2_b(self, x):\n", | |
" return self.times2_a(x)\n", | |
" \n", | |
" def times2_c(self, x):\n", | |
" return self.times2_b(x)\n", | |
" \n", | |
" def times2_d(self, x):\n", | |
" return self.times2_c(x)\n", | |
" \n", | |
" def times2_e(self, x):\n", | |
" return self.times2_d(x)\n", | |
" \n", | |
" def times2_f(self, x):\n", | |
" return self.times2_e(x)\n", | |
" \n", | |
" def times2_g(self, x):\n", | |
" return self.times2_f(x)\n", | |
" \n", | |
" def times2_h(self, x):\n", | |
" return self.times2_g(x)\n", | |
" \n", | |
" def times2_i(self, x):\n", | |
" return self.times2_h(x)\n", | |
" \n", | |
" def times2_j(self, x):\n", | |
" return self.times2_i(x)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Take Timing Data" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"timing_results = {}\n", | |
"\n", | |
"timing_results['Function No Arg'] = []\n", | |
"\n", | |
"ti = %timeit -o -q a()\n", | |
"timing_results['Function No Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q b()\n", | |
"timing_results['Function No Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q c()\n", | |
"timing_results['Function No Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q d()\n", | |
"timing_results['Function No Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q e()\n", | |
"timing_results['Function No Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q f()\n", | |
"timing_results['Function No Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q g()\n", | |
"timing_results['Function No Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q h()\n", | |
"timing_results['Function No Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q i()\n", | |
"timing_results['Function No Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q j()\n", | |
"timing_results['Function No Arg'].append(ti)\n", | |
"\n", | |
"timing_results['Function 1 Arg'] = []\n", | |
"\n", | |
"ti = %timeit -o -q times2_a(29)\n", | |
"timing_results['Function 1 Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q times2_b(29)\n", | |
"timing_results['Function 1 Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q times2_c(29)\n", | |
"timing_results['Function 1 Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q times2_d(29)\n", | |
"timing_results['Function 1 Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q times2_e(29)\n", | |
"timing_results['Function 1 Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q times2_f(29)\n", | |
"timing_results['Function 1 Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q times2_g(29)\n", | |
"timing_results['Function 1 Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q times2_h(29)\n", | |
"timing_results['Function 1 Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q times2_i(29)\n", | |
"timing_results['Function 1 Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q times2_j(29)\n", | |
"timing_results['Function 1 Arg'].append(ti)\n", | |
"\n", | |
"ol = OneLiners()\n", | |
"timing_results['Class Method No Arg'] = []\n", | |
"\n", | |
"ti = %timeit -o -q ol.a()\n", | |
"timing_results['Class Method No Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q ol.b()\n", | |
"timing_results['Class Method No Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q ol.c()\n", | |
"timing_results['Class Method No Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q ol.d()\n", | |
"timing_results['Class Method No Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q ol.e()\n", | |
"timing_results['Class Method No Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q ol.f()\n", | |
"timing_results['Class Method No Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q ol.g()\n", | |
"timing_results['Class Method No Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q ol.h()\n", | |
"timing_results['Class Method No Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q ol.i()\n", | |
"timing_results['Class Method No Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q ol.j()\n", | |
"timing_results['Class Method No Arg'].append(ti)\n", | |
"\n", | |
"timing_results['Class Method 1 Arg'] = []\n", | |
"\n", | |
"ti = %timeit -o -q ol.times2_a(29)\n", | |
"timing_results['Class Method 1 Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q ol.times2_b(29)\n", | |
"timing_results['Class Method 1 Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q ol.times2_c(29)\n", | |
"timing_results['Class Method 1 Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q ol.times2_d(29)\n", | |
"timing_results['Class Method 1 Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q ol.times2_e(29)\n", | |
"timing_results['Class Method 1 Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q ol.times2_f(29)\n", | |
"timing_results['Class Method 1 Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q ol.times2_g(29)\n", | |
"timing_results['Class Method 1 Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q ol.times2_h(29)\n", | |
"timing_results['Class Method 1 Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q ol.times2_i(29)\n", | |
"timing_results['Class Method 1 Arg'].append(ti)\n", | |
"\n", | |
"ti = %timeit -o -q ol.times2_j(29)\n", | |
"timing_results['Class Method 1 Arg'].append(ti)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Analyse, Plot, and Save" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import platform\n", | |
"\n", | |
"import matplotlib.pyplot as plt\n", | |
"import numpy as np\n", | |
"import seaborn as sns\n", | |
"sns.set_style(\"darkgrid\")\n", | |
"sns.set_context(\"paper\", font_scale=1.5)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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Bq1FRKQuadiDiMgF7u7utGjRotYfT09P4NK/gt+0aVOt5bwXLVrEjTfeyFdffcUtt9xC9+7dmThxYs1a9z87dOgQf/jDH+jZsyc9evRg/PjxpKamsn79et544w1ycnKIiYkhJiaGRYsWARcPe6iqqmLBggUMHjyYbt26MXLkSDZv3lzrPDExMXz44YfMmDGDHj16kJiYyDvvvHNF74W/vz8tWrQgNDSUvn378txzz/HMM8/w/vvvs3fv3prX5ebmMmvWLBISEujRowcTJkyotX/37t3ExMTw9ddfM378eGJjYxk1ahTffvstUP2k+d577wVg+PDhxMTEMHHixFq1rF69mmHDhtGzZ08eeeQR8vLyrugaREQuReFXRKQOnT9/no8//pgFCxawatUqiouLefrpp2v2Hzt2jPvuuw9/f38++OADNmzYwJQpU7DZbIwcOZJp06bRunVrduzYwY4dO7j//vsveZ6FCxeydu1ann76aTZv3sztt9/OjBkz2LlzZ63X/f3vf6dPnz5s2rSJP/zhDyxYsIBdu3Zd07VNmDABX19ftmzZAkBFRQWTJk2itLSUd955h40bN5KYmMjUqVPJyMio9b0vvvgijz76KBs3biQ+Pp5HHnmEs2fPEhISwuLFiwFYu3YtO3bsqAn8AAcPHmT37t0sWbKEd999lx9//JGXXnrpmuoXEQENexARqbFnzx569OhR87XRaOSrr766qmOYzWZeeeUVgoKCAJg2bRp//vOfqaysxNPTk6VLlxIeHs6CBQtwcal+/hAREVHz/c2aNcPV1ZUWLVpc9hzl5eWsWLGC2bNnc+uttwLw8MMPc/DgQd566y369+9f89qRI0fy+9//HoBJkybx0Ucf8e2335KQkHBV1wXg5uZG+/btOXnyJACff/45JSUlvPbaazXjkR955BF27tzJqlWraj2pnjZtGsOGDQNg7ty57Ny5k48++ognn3wSf39/AIKCgi66bnd3d1588UU8PDwAuPvuu1m+fPlV1y4i8jOFXxGRC+Li4mo9VXR1db3qY7Rs2bIm+AK0atUKu92OyWSiTZs2HD58mMGDB9cE32uRlZVFVVUVffr0qbW9T58+LF26tNa2Tp061fq6VatW5ObmXvO57XY7BoMBqH4qm5ube1EdZrMZLy+vWtt++T8Vbm5uxMbGXvR0+FKioqJqgi9Uv7+/pX4REYVfEZELvLy8aNeu3SX3GQwG7HZ7rW0Wi+Wi17m7u1/y+202W61j1YVLHefX235dz6Wu40pZLBZOnDhBfHw8UH1NUVFRvPnmmxe99tfh91rVZf0iIqAxvyIiV8RoNHLu3Lla23744YerPk7Xrl357rvvaoXhX3J3d8dqtf7HY7Rr1w4PDw/27NlTa/vevXuJjo6+6pqu1Mcff0xxcXHNUItu3bpx8uRJfHx8aNeuXa0/rVq1qvW9+/fvr/m7xWLh4MGDREVFAdQ82b3ceyIiUpcUfkVErsCAAQM4fvw4K1euJDs7mzVr1tQ0fl2NBx54gKysLP7yl79w8OBBsrOz2bJlC/v27QMgNDSU3Nxc9u3bR15eHuXl5Rcdw9vbm4kTJ/Jf//VfbNmyhczMTN5++222bt3Kww8//JuvFaCwsJDz58+Tk5PDnj17eO6550hKSuKBBx6gV69eANx+++2Ehoby4IMPsmPHDk6dOkVqaipLliy5aKz0O++8Q0pKChkZGTz33HPk5uZy9913A9CmTRtcXFxISUnBZDJRXFxcJ9cgInIpGvYgInIFBgwYwBNPPMGSJUt49dVXGTZsGI8++ihz5869quPExMSwYsUKFi5cyMSJEzEYDERHRzNnzhwARowYwS233MJDDz1EYWEhjz32GI8//vhFx3nyySdxcXEhKSmJ/Px8wsPDeeWVV2o1u/0W06dPB8DT05Pg4GDi4uJ49913GThwYM1rPD09WbFiBa+//jqzZ88mPz+fwMBA4uLiGDx4cK3j/fWvf+WNN94gLS2N8PBwFi9eTOvWrQEIDg7mqaeeYunSpSQlJdG7d29WrFhRJ9chIvJrBrsGT4mISD3ZvXs3kyZNIiUlpSbsiog4koY9iIiIiIjTUPgVEREREaehYQ8iIiIi4jT05FdEREREnIbCr4iIiIg4DYVfEREREXEaCr8iIiIi4jQUfkVERETEaSj8ioiIiIjT+P/Qd/elURCs/QAAAABJRU5ErkJggg==\n", | |
"text/plain": [ | |
"<Figure size 720x432 with 1 Axes>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"fig,ax = plt.subplots(figsize=(10,6))\n", | |
"\n", | |
"overheads = {}\n", | |
"max_depth = 10\n", | |
"\n", | |
"# explicit order because dictionary order is only preserved for Python 3.6+\n", | |
"for ct, label in enumerate((\"Function No Arg\", \"Function 1 Arg\", \"Class Method No Arg\", \"Class Method 1 Arg\")):\n", | |
" results = timing_results[label]\n", | |
" xs = 1 + np.arange(max_depth)\n", | |
" # the results from timeit changed at some point\n", | |
"# vals = np.array([ti.average/1e-9 for ti in results])\n", | |
"# errs = np.array([ti.stdev/1e-9 for ti in results])\n", | |
" vals = np.array([np.mean(ti.all_runs)/ti.loops/1e-9 for ti in results])\n", | |
" stds = np.array([np.std(ti.all_runs)/ti.loops/1e-9 for ti in results])\n", | |
" fit_coeffs, V = np.polyfit(xs, vals, deg=1, cov=True, w=1/stds)\n", | |
" overheads[label] = (fit_coeffs[0], np.sqrt(V[0,0]))\n", | |
" err_bars = ax.errorbar(xs, vals, yerr=stds, linestyle=\"none\", elinewidth=3, marker=\".\", label=label+\" | {:.0f} +- {:.0f} ns\".format(overheads[label][0],overheads[label][1]), color=\"C{}\".format(ct))\n", | |
" ax.plot(xs, np.poly1d(fit_coeffs)(xs)) \n", | |
" ax.set_xlabel(\"Function Depth\")\n", | |
" ax.set_ylabel(\"Overhead (ns)\")\n", | |
" ax.set_title(\"Function Call Overhead in Python {}\".format(platform.python_version()))\n", | |
"\n", | |
"plt.legend(loc=\"upper center\")\n", | |
"plt.tight_layout()\n", | |
"plt.savefig(\"function_call_overheads_{}.svg\".format(platform.python_version()))\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 41, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"{'Function No Arg': (52.357737316705354, 5.411066087581683),\n", | |
" 'Function 1 Arg': (58.59232795510167, 2.3252167669923893),\n", | |
" 'Class Method No Arg': (65.66551468777175, 1.6880296694469707),\n", | |
" 'Class Method 1 Arg': (75.89370814679793, 1.9136119330087413)}" | |
] | |
}, | |
"execution_count": 41, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"overheads" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import pickle\n", | |
"with open(\"function_call_overheads_{}.pickle\".format(platform.python_version()), \"wb\") as f:\n", | |
" pickle.dump(overheads, f)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Comparing Across Python Versions" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import pickle\n", | |
"\n", | |
"import pandas as pd\n", | |
"import seaborn as sns\n", | |
"import matplotlib.pyplot as plt\n", | |
"import numpy as np\n", | |
"sns.set_style(\"darkgrid\")\n", | |
"sns.set_context(\"paper\", font_scale=1.5)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"overheads = pd.DataFrame(columns=[\"Python Version\", \"Function Type\", \"Overhead (ns)\"])\n", | |
"\n", | |
"for py_version in [\"2.7.18\", \"3.5.6\", \"3.6.10\", \"3.7.7\", \"3.8.3\"]:\n", | |
" with open(\"function_call_overheads_{}.pickle\".format(py_version), \"rb\") as f:\n", | |
" data = pickle.load(f, encoding='latin1') # encoding kwarg for loading Python 2 pickle with strings in python 3\n", | |
" for k,v in data.items():\n", | |
" # very silly way to get error bars in seaborn by add 100 sampled values\n", | |
" for ct in range(100):\n", | |
" overheads = overheads.append({\"Python Version\":py_version, \"Function Type\":k, \"Overhead (ns)\":v[0] + v[1]*np.random.randn()}, ignore_index=True)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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f4xGI3fvxnDhQniy+vHx8YSEfMs774xKdX8REReJjo5Otmznzq8pWbI01asH2O04RB7KAAnNE6xleXwZzYlcmdfKprp3Eg1AEQCuLe1EnJNtY3kLDP3mUcMTkcdIrkp+fX19mTNnTprra9WqxYYNG7IvIAen+3PwZkM72Hg/maOjI1OmzExzfVBQO4KC2iVb5urqys6dIWlu89VXwSmW9erVl169+toWlIg9KekVEZEslKuS39wmxuyYoYdPPLLMT6QgIiIiIjbINWN+RUREROT+DE0PHuEtWU89vyIikqe4O1oo7Z5oLYs8TvT4bvtT8isiInmK0QDj60RZyyKPEz2+2/6U/IqISJ6jpFdEHpX60kVEREQk31DPr4iIiIidGV1NmCyJD61ndolLVja72P6UVUeDE+Z4pXYPozMkIo/kwZ3IuhlDROThTJZEOq588eEV74ErrgD0+rInuNjexoaeGzEqtXsofWuJSIY9uBt51Khhmo5HRETyFP15ICIZpruRRUQkr1LymwctX76EXbt2cO3aVdzd3albtz6DBg3Bx6dwqvX/859NfPHFGi5fvoyPjw/PPdeenj37YDCkfrv09OmTOXz4IDdv3sDDw5PGjZsxYMDbuLm52fOwRERExBnMHmZrWbKekt90uDo7YjHbfwJ1g9FAfILJ5vp+fmV4993RFC9egqioSBYunMvkyeOZM2dhirq//HKEWbOmMWLEWGrVqs3p078zceL7FClSlOeea5/q/qtUqUrbts9RtKgvly9fYvbsaSxc+CHvvjvmkY9Rcr8nHO9hND78ZgwAnGOtRQ/nWDydbf9VciuNP7pERAQwQELzBGtZsp6S33RYzBZWTdpt93Z6jG2ZofqtW7exlosXL0HXrj344IPUE9MTJ45TvnxF2rZ93lq/Xr36/PZbWJrJb/v2fw3IL1asOB06dGLz5g0ZilHyHqM5kSvzWtlU906iASgCwLWlnYhzsv2PxAJDv3mU8ERE8g8lvXalG97yuJiYGHbt2k5AQM1U11erFsCFC+f573+PAnDu3FmOHz9G/fqBNu0/MvImISHfprl/ERERkbxEPb951M6dXzNz5hTi4uKoWrU6s2bNS7VezZpPMmzYCAYPfoukpCTMZjNvvjmQxo2bpbv/Vas+ZdWqT4mPj+epp5owZMhwexyG5FHujhZKuydayyIiInmF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cnNzK3AbmZmZWrt2rSZOnKhevXpJkkaOHKkff/xRS5YssQq//v7+ev755yVJL730ktatW6dvvvnmnsOvJA0aNEhDhgzRL7/8ojp16ig7O1txcXEaNWqU1Xze3t4aPXq0JMnT01NHjx7VqlWrNGTIEB07dkxbt27Vjh075O7uLklyd3dXSkqKIiMjCb8ASgThFwAKYTabNXv2bMvzChUqFHsdNWvWtARfSapVq5Zyc3N14cIF1alTRwcPHlTHjh0twfdenDhxQtnZ2WrVqpVVe6tWrRQREWHV5uXlZfW8Vq1aOn/+/D1vW5KeeuopNWrUSNHR0Ro7dqx27typy5cv5wmst48C31pu9erVunbtmn788UdJyrPM9evXCxztBoDiIvwCQCEqVaokDw+PfKfZ2dnpzhvmXL9+Pc98jo6O+S6fk5Njta6SkN967my7sz/5vY57ERwcrIiICI0ePVobN25Uz5495ezsXOgyt283NzdXdnZ2io6OloOD9eHpfj4YAMDt2JsAwD1ydXXVb7/9ZtV26NChYq+nWbNm2rVrl1UYvp2jo6Nu3LhR6Do8PDxUsWJF7dmzx6p97969atSoUbH7dC8CAgL0xx9/aP369dq1a5fl0orbJScnWz3ft2+f6tWrJycnJzVv3ly5ubk6e/asPDw8rB63LoMAgPtF+AWAe9SuXTulpqYqMjJSJ0+e1KeffqrExMRir+eVV17RiRMnNH78eP344486efKkEhMT9cMPP0iS6tWrp/Pnz+uHH35Qenq6MjMz86zjkUceUUhIiP76178qMTFRx48f19KlS7Vz506NHDnyvl/r3ahatar8/f01a9YseXp6qmXLlnnmSU5O1pIlS3T8+HFt3rxZUVFRljtmNG7cWH369FFYWJgSEhJ08uRJHT58WBs3btTKlSsfyGsA8PAj/ALAPWrXrp3efPNNLVu2TP369VNSUpLly1zFYTKZtHbtWqWnpyskJET9+vXTypUrLdcXd+vWTT179tSIESPUtm1brVixIt/1vPXWW3ruuec0c+ZM9enTR/Hx8ZozZ47Vl91K26BBg5SdnZ3vqK8kvfzyy0pNTVX//v314YcfKjQ0VC+88IJl+uzZszV48GCFh4fL399fL7/8suLj4/XEE088qJcA4CHHL7wBAErM9u3bNX78eH355ZeqUaOG1bT27dtr2LBhGj58uI16BwB84Q0AUAIyMzN15swZLVmyRIGBgXmCLwCUFVz2AAC4b4sWLVK/fv30yCOP6O2337Z1dwCgQFz2AAAAAMNg5BcAAACGQfgFAACAYRB+AQAAYBiEXwAAABgG4RcAAACGQfgFAACAYfwfQIAi/+Oin5oAAAAASUVORK5CYII=\n", | |
"text/plain": [ | |
"<Figure size 720x432 with 1 Axes>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.figure(figsize=(10, 6))\n", | |
"sns.barplot(x=\"Function Type\", y=\"Overhead (ns)\", hue=\"Python Version\", data=overheads, ci=\"sd\")\n", | |
"plt.title(\"Python Function Call Overhead\")\n", | |
"plt.tight_layout()\n", | |
"plt.savefig(\"function_call_overhead_grouped_by_type.svg\")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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2bLljufj7u6u7t27Kzw8XMnJyQ7bPv/8cyUlJalnz572dXv27FHv3r0VEBCgFi1a6JVXXtHVq1ft21966SU988wzev/99xUaGip/f3/dvHlT+/fvV58+fdSgQQM1bNhQnTt31rfffisp42EPly5d0siRIxUUFKSAgAD169dPx44ds2//9ttv5evrq++++05PPvmkAgIC9MQTT9j3CQD3ivALAJkoVKiQrFarUlNT1adPH3366adKSkqyb9+3b58uXryo7t276+mnn9YTTzyhBg0aKDIyUpGRkerYsaO97TvvvKNGjRopPDxczzzzjN58803t27fPvv2VV15RZGSk3njjDW3ZskUNGzbUc889p1OnTjnUNG/ePHXq1Elbt25Vhw4d9Morr+js2bN3PIeePXvqjz/+0I4dOxzWr1+/XiEhIfL29pYkRUZGavjw4erUqZO2bdumd955RzExMRoxYoTD+w4dOqSDBw9q6dKlCg8Pl8Vi0XPPPacGDRpoy5Yt2rRpk1544YU7Xum12Wx6/vnnde7cOS1fvlyffPKJSpcurUGDBjkEbUmaM2eOXnjhBYWHh8vX11ejRo1SYmLiHc8VAO6G8AsAdxAdHa2PPvpIgYGBKlasmNq1a6eCBQtq+/bt9jbr169XixYt9MADD6ho0aIqVKiQ/epxuXLlVKhQIXvbjh07qlevXqpSpYr69++v6tWra+/evZKkmJgYffnll3r11VfVokUL1ahRQ5MmTdJDDz2klStXOtT11FNPqWPHjqpatapGjRqlggULOoTof6pUqZKaN2/uMPTh9OnTOnDggHr37m1f984772jgwIHq27evqlatqoCAAM2ePVtRUVH6+eef7e3c3d01Z84c+fn5ydfXV4mJiUpMTFSbNm1UtWpVVatWTe3atdPDDz+cYT2RkZH66aefNG/ePDVs2FB+fn6aO3eu3NzctHbtWoe2L774opo3b67q1atr7Nixunbtmv7v//4vs24DgEy553YBAJCXfP/992rQoIHS0tKUnJysJk2aaNq0aZIkT09Pde3aVZ988ol69uyp+Ph47dy5U/Pnzze0bz8/P4fX3t7eunz5siTZb0gLCgpyaBMUFKQff/zxjvtxd3eXl5eXfT930rt3bw0fPlwxMTGqWrWq1q9frwoVKigkJMTe5ujRozp69Kg++OCDdO+PiYlRrVq1JEk1a9ZU4cKF7dvKlCmjbt26adCgQQoODlajRo3Url07VatWLcNaoqOjVbZsWT344IP2dYUKFZK/v79++eUXh7a1a9e2L9+6Qn23cwWAzBB+AeA2AQEBmjNnjtzc3FS+fHl5eno6bO/Tp49Wr16tEydOaN++fSpZsqRatWplaN8eHh4Ory0Wi2w2W6bvsdlsslgs2d7P7Te+jRw5Ups3b1bfvn3l5ubmcKznn39eTzzxRLr3ly1b1r58e/C9ZdasWRo4cKD27t2rvXv3asGCBZo6darDeOJ/1pzVc721zZUzUwC4/zHsAQBuU6hQIVWtWlU+Pj7pgq8kVa1aVcHBwVq/fr02bNig7t27y939v9cRPDw8lJaWluXjPvTQQ5KkAwcOOKz/4YcfVLNmzSzv75/c3NzUo0cPbd68WZ9//rmuXbumHj16OLSpW7euoqOjVbVq1XR/ihYtetdj+Pr66umnn9Z7772nLl26ZDjDhPTXlePY2FidPn3avu7GjRs6evSo/e8BAFyF8AsAWdS7d2+tW7dO0dHR6QKkj4+PTp8+rV9++UVxcXHpZli4kypVqqh9+/Z67bXXtGfPHp06dUrTp0/XL7/8omeeecYpdffs2VNXr17VjBkzFBISoooVKzpsHzlypHbs2KE5c+bo+PHjiomJ0a5duzRhwoRMz+P06dOaN2+efvjhB128eFEHDx7UwYMH7xjamzdvrrp16+pf//qXDh48qJMnT+rll19WWlqawxhkAHAFhj0AQBa1bdtWxYsXV506dVS5cmWHbT169FBUVJT69OmjxMREzZo1S926dTO03xkzZmju3LkaO3asEhMTVatWLb377ruqUaOGU+quWLGiQkJC9PXXX6tXr17ptjdt2lSrV6/W4sWLtXbtWtlsNj3wwANq3ry5w/CIfypatKhOnz6tLVu2KD4+XqVLl1ZoaKhefvnlDNtbLBYtXbpUM2fO1ODBg5WSkqLAwECtWrVKpUqVcsq5AsCdWGx3GygGAHBw9epVhYSE6I033tBjjz2W2+UAALKAK78AYFBKSoquXLmiJUuWqHz58jyuFwDyIcIvABh08OBB9e/fXz4+PvYZIQAA+QvDHgAAAGAazPYAAAAA0yD8AgAAwDQIvwAAADANwi8AAABMg/ALAAAA0yD8AgAAwDT+HziHnS6vXDdNAAAAAElFTkSuQmCC\n", | |
"text/plain": [ | |
"<Figure size 720x432 with 1 Axes>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.figure(figsize=(10, 6))\n", | |
"sns.barplot(x=\"Python Version\", y=\"Overhead (ns)\", hue=\"Function Type\", data=overheads, ci=\"sd\")\n", | |
"plt.title(\"Python Function Call Overhead\")\n", | |
"plt.tight_layout()\n", | |
"plt.savefig(\"function_call_overhead_grouped_by_version.svg\")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.8.3" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 4 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment